Я сделал прямоугольник, который нарисовал с помощью Graphics.DrawLine () для каждого края. Но я бы хотел, чтобы коробка могла свободно перемещаться по экрану вместе с изменением размера краев. Коробка создается с помощью средней точки, ширины и высоты, а затем с помощью базовой математики, чтобы найти 4 точки, с которыми соединяются линии. У меня вопрос: как мне обновить положение строк? Нужно ли очищать графику и перерисовывать линии в каждом кадре? Любые ответы будут полезны. Спасибо.
Вот код, который я использую:
private void Form1_Paint(object sender, PaintEventArgs e)
{
Point box_Middle = new Point(300, 300);
int boxWidth = 100;
int boxHeight = 200;
Pen boxPen = new Pen(Color.Red, 3);
DrawBox(e, boxPen, box_Middle, boxWidth, boxHeight);
}
void DrawBox (PaintEventArgs e, Pen pen, Point middle, int width, int height)
{
graphics = e.Graphics;
graphics.TextRenderingHint = System.Drawing.
Text.TextRenderingHint.
SingleBitPerPixelGridFit;
// Draw Box
Point topLeft = new Point(middle.X - width / 2, middle.Y - height / 2);
Point topRight = new Point(topLeft.X + width, topLeft.Y);
Point bottomLeft = new Point(topLeft.X, topLeft.Y + height);
Point bottomRight = new Point(topRight.X, bottomLeft.Y);
graphics.DrawLine(pen, topLeft, topRight);
graphics.DrawLine(pen, topLeft, bottomLeft);
graphics.DrawLine(pen, bottomLeft, bottomRight);
graphics.DrawLine(pen, topRight, bottomRight);
}
Спасибо за ответы. Теперь он работает отлично.





Добавьте
Timerдля обновления переменных и вызовитеForm1.Invalidate()для его перерисовки.