Есть ли способ рисовать прямоугольник с начальными и конечными точками вместо начальной точки и области ?. Я использую следующий код, чтобы нарисовать прямоугольник на форме с помощью мыши:Нарисуйте прямоугольник с помощью мыши
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' и просто' Invalidate' область формы, которая должна быть перерисована в событии 'MouseMove'. Это остановит мерцание, которое вы испытываете. – Jamiec