在C#中使用GraphicsPath绘制矩形并不完成绘图(GDI +)

时间:2014-05-09 05:50:03

标签: c#-4.0 c#-3.0 gdi+ 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 个答案:

答案 0 :(得分:1)

您正在“向后”绘制一些线条 - 对于连接的形状,您始终希望一行的 end 坐标为 start 坐标。下一行。所以:

    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