C# 4.0 有没有办法用C#GDI+;来填充图形;,图形中涉及多重圆弧、直线的位置?

C# 4.0 有没有办法用C#GDI+;来填充图形;,图形中涉及多重圆弧、直线的位置?,c#-4.0,c#-3.0,gdi+,gdi,C# 4.0,C# 3.0,Gdi+,Gdi,我的应用程序涉及自定义形状的绘制,其中形状的详细信息从数据库中检索。形状将是直线、圆弧 我将调用DrawArc和DrawLine函数来绘制自定义形状 我的问题是我需要用背景色填充这个自定义形状 我正在使用以下名称空间 using System.Drawing.Drawing2D; using System.Drawing; 我尝试过的东西: 图形填充区域法 private void OnPaint(object sender, PaintEventArgs e) {

我的应用程序涉及自定义形状的绘制,其中形状的详细信息从数据库中检索。形状将是直线、圆弧

我将调用DrawArc和DrawLine函数来绘制自定义形状

我的问题是我需要用背景色填充这个自定义形状

我正在使用以下名称空间

 using System.Drawing.Drawing2D;
 using System.Drawing;
我尝试过的东西:

图形填充区域法

    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, 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
        path.CloseFigure();

        g.DrawPath(redPen, path);

        Region reg = new Region(path);
        g.FillRegion(Brushes.Green, reg);

        reg.Dispose();
        g.Dispose();
    }
使用这种方法很容易填充一个简单的形状,其中起点和终点都有明确的定义

但我的应用程序涉及复杂的形状,很难跟踪这些点。如果我使用这种方法,填充背景色是不合适的

请建议我一些填充自定义形状的方法


谢谢您的帮助。

您是否考虑过使用
FillPath
而不是
FillRegion
?嗨,达米恩,是的,我也尝试过FillPath。。它不起作用。嗯,你能至少尝试添加一个你当前的方法不正确的形状的例子吗?如果没有一个例子来检验,“不恰当”是什么意思,这有点困难。嗨,达米恩,下面的链接是你回答的。问题是对于线形图,从数据库中检索到的坐标顺序不正确,我指的是起点和终点。例如,如果图表包含两条弧和线,由于顺序不正确,绘制图表很容易,但填充图表很困难,因为跟踪路径很困难。我知道我以前回答过你的一个问题,你在哪里以错误的顺序指定了线。你难道看不到,在填充一个形状时,更重要的是你要把线段按正确的顺序排列,这样任何一台计算机都能决定“内部”和“外部”之间的区别吗?