마우스 드래그시 Rectangle 상자를 그려주는 모듈이 필요했다..
Graphics 의 DrawRectangle로 그렸더니 동작은 잘 된다..
그러나 큰 문제가 남았다.. 잔상이 심하게 남는다.
이런.. C
이래선 되겠는가..
구글신을 찾아갔다~~
역시 해결책이 있다..
GDI+ 의 XOR 연산을 통한 모듈이 있다.
친절하게 클래스로 만들어져 있다.
사용방법은 간단하다.
2. 전역 변수를 선언한다.
3. MouseDown, MouseMove, MouseUp 이벤트를 걸어준다.
해당 코드를 살펴보자
private CGdi32 gdi;
private Point oldMouse, mouseDownAt;
private void pnlMain_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
gdi.DrawRectangle(pnlMain.CreateGraphics(), mouseDownAt, new Point(e.X, e.Y));
gdi.DrawRectangle(pnlMain.CreateGraphics(), mouseDownAt, oldMouse);
oldMouse = new Point(e.X, e.Y);
}
}
private void pnlMain_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
gdi.DrawRectangle(pnlMain.CreateGraphics(), mouseDownAt, oldMouse);
}
}
private void pnlMain_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
oldMouse = mouseDownAt = new Point(e.X, e.Y);
}
사용된 cs 파일은 아래 링크에서 다운 받으면 된다.
원문 / 다운 : http://www.codeproject.com/KB/GDI-plus/rubberrectangle.aspx