2012-05-27 205 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

所以我可以做一個像樣的截圖:) –