Рисование прямоугольника с использованием GraphicsPath в C# не завершает рисование (GDI+)

Я должен нарисовать прямоугольник, используя линии, координаты и меры которых уже указаны.

В приведенном ниже коде, если я вызываю функцию CloseFigure. C# предполагает, что рисунок неполон и, следовательно, рисует другую линию по диагонали, чтобы закрыть прямоугольник.

Если я использую функцию AddRectangle, рисование завершено. Никаких проблем с этим.

Как я могу закончить рисунок, правильно используя линии?

   private void OnPaint(object sender, PaintEventArgs e)
    {
        Pen redPen = new Pen(Color.Red, 2);
        // Create a graphics path
        GraphicsPath path = new GraphicsPath();
        // Add two lines, a rectangle and an ellipse
        Graphics g = e.Graphics;
        path.StartFigure();

        path.AddLine(20, 20, 20, 400); // left
        path.AddLine(20, 20, 400, 20); //top
        path.AddLine(400, 20, 400, 400); // right
        path.AddLine(20, 400, 400, 400); // bottom

        path.CloseFigure(); 
        //This will close the drawing, by drawing a line between starting and ending point
    }

Спасибо за вашу помощь!!

1 ответ

Вы рисуете некоторые из ваших линий "назад" - для соединенной фигуры вы всегда хотите, чтобы конечные координаты одной линии были начальными координатами следующей линии. Так:

    path.AddLine(20, 400, 20, 20); // left
    path.AddLine(20, 20, 400, 20); //top
    path.AddLine(400, 20, 400, 400); // right
    path.AddLine(400, 400, 20, 400); // bottom
Другие вопросы по тегам