0

ペイント イベントのグラフィックス オブジェクトを使用して、winforms パネルに複数の線を描画しようとしています。私は実際に、与えられた点を結ぶ多くの線を描いています。ということで、まずはこれをやって、

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.DrawLines(new Pen(new SolidBrush(Color.Crimson), 3), PointFs.ToArray());
        float width = 10;
        float height = 10;
        var circleBrush = new SolidBrush(Color.Crimson);
        foreach (var point in PointFs)
        {
            float rectangleX = point.X - width / 2;
            float rectangleY = point.Y - height / 2;
            var r = new RectangleF(rectangleX, rectangleY, width, height);

            e.Graphics.FillEllipse(circleBrush, r);
        }
    }

これにより、下の画像のような結果が得られます。

ここに画像の説明を入力

ご覧のとおり、急カーブでラインが少し伸びて描かれていますが、これは想定外です。そこで、ドローラインのコードを次のように変更しました。

var pen = new Pen(new SolidBrush(Color.Crimson), 3);
for (int i = 1; i < PointFs.Count; i++)
{
    e.Graphics.DrawLine(pen, PointFs[i - 1], PointFs[i]);
}

そして今、図面はうまくいきます。

ここに画像の説明を入力

2つのアプローチの違いを誰かが教えてくれますか?

4

1 に答える 1