시작점과 끝점 대신 시작점과 끝점이있는 사각형을 그릴 방법이 있습니까? 나는 마우스를 통해 양식에 사각형을 그립니다, 다음 코드를 사용하고 있습니다 :마우스로 직사각형 그리기
System.Drawing.Graphics formGraphics;
bool isDown = false;
int initialX;
int initialY;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
isDown = true;
initialX = e.X;
initialY = e.Y;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (isDown == true)
{
this.Refresh();
Pen drwaPen = new Pen(Color.Navy,1);
int width = e.X - initialX, height = e.Y - initialY;
//if (Math.Sign (width) == -1) width = width
//Rectangle rect = new Rectangle(initialPt.X, initialPt.Y, Cursor.Position.X - initialPt.X, Cursor.Position.Y - initialPt.Y);
Rectangle rect = new Rectangle(initialX, initialY, width * Math.Sign(width), height * Math.Sign(height));
formGraphics = this.CreateGraphics();
formGraphics.DrawRectangle(drwaPen, rect);
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
isDown = false;
}
내가 출발점에서 다시 마우스를 이동할 때 사각형이 플립 수 있지만 대신이 일을해야한다,이 코드를 사용하여 사각형을 그릴 수 있습니다 내 사각형이 마우스 커서의 반대 방향으로 그려집니다. 짧은 있음이 코드는 정방향으로 직사각형을 그리는 동안 잘 작동하지만 뒤로 방향으로는 작동하지 않습니다.
'OnPaint'에서 페인팅을하고'MouseMove' 이벤트에서 repaininting이 필요한 폼 영역을'Invalidate'해야합니다. 이렇게하면 깜박임을 멈추게됩니다. – Jamiec