4

ペンでドローカーブで形を描いています。

そのグラフィックに色を塗りつぶす必要があります。どうすればよいですか?

これは私のコードです:

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), });

塗りつぶしパスを見つけましたが、その使用方法がわかりません。

4

1 に答える 1

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;
    }

プロデュース:

ここに画像の説明を入力

于 2012-05-27T12:14:35.407 に答える