2012-05-27 152 views
3

我正在用笔绘制带有drawcurve的形状。如何在由笔绘制的形状中填充颜色

我需要填充该图形的颜色我该怎么做?

这是我的代码:

Pen p1 = new Pen(Color.Red); 
Graphics g1 = panel1.CreateGraphics(); 
g1.DrawCurve(p1, new Point[] { new Point(470, 470), new Point(430, 440), new Point(400, 480), new Point(470, 560), }); 
Graphics g2 = panel1.CreateGraphics(); 
g2.DrawCurve(p1, new Point[] { new Point(470, 470), new Point(510, 440), new Point(540, 480), new Point(470, 560), }); 

我发现填充路径,但我不知道如何使用。

回答

6

使用GraphicsPath类。您可以绘制它填充Graphics.FillPath并绘制轮廓,如有必要,使用Graphics.DrawPath。并且一定只能绘制Paint事件处理函数,无论你使用CreateGraphics()绘制什么,当面板重新绘制时都不会持续很长时间。

using System.Drawing.Drawing2D; 
... 
    public partial class Form1 : Form { 
     public Form1() { 
      InitializeComponent(); 
      panelPath = new GraphicsPath(); 
      panelPath.AddCurve(new Point[] { new Point(470, 470), new Point(430, 440), new Point(400, 480), new Point(470, 560), }); 
      panelPath.AddCurve(new Point[] { new Point(470, 470), new Point(510, 440), new Point(540, 480), new Point(470, 560), }); 
      panel1.Paint += new PaintEventHandler(panel1_Paint); 
     } 

     void panel1_Paint(object sender, PaintEventArgs e) { 
      e.Graphics.TranslateTransform(-360, -400); 
      e.Graphics.FillPath(Brushes.Green, panelPath); 
      e.Graphics.DrawPath(Pens.Red, panelPath); 
     } 
     GraphicsPath panelPath; 
    } 

产地:

enter image description here

+0

这是我在做什么,但它可能不会成功。 感谢您的正确的代码,现在它工作完美... 我只是想知道这是什么在线下做e.Graphics.TranslateTransform(-360,-400); – alternatefaraz

+1

所以我可以做一个像样的截图:) –