Как я могу обновить позиции Graphics.DrawLine ()? - PullRequest
0 голосов
/ 18 мая 2018

Я сделал окно, которое я нарисовал, используя 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);
    }
...