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

Так что я могу сделать приличный снимок экрана :) –

Смежные вопросы