C#形式 - 用油漆的方法呢?(C# Forms - Using Paint methods?)

2019-10-16 16:56发布

在C#的形式我创建了一个新的油漆方法:

private void thisPolygon(PaintEventArgs e)
{
    Pen clrBlue = new Pen(Color.Blue, 3);
    Point[] Wst = new Point[5];
    Wst[0] = new Point(20, 350);
    Wst[1] = new Point(110, 200);
    Wst[2] = new Point(200, 190);
    Wst[3] = new Point(210, 275);
    Wst[4] = new Point(190, 400);
    Wst[5] = new Point(50, 390);
    e.Graphics.DrawPolygon(clrBlue, Wst);
}

现在,我该如何称呼呢? 我不能让它工作,这不工作:

private void Form1_Load(object sender, EventArgs e)
{
    thisPolygon(); ///I've tried adding some stuff in brackets area, failed.
}

Answer 1:

你有几个不同的问题。

(1) 阵列容量 。 你的数组初始化5个的存储位置,但您正在尝试设置第六值。

Point[] Wst = new Point[5]; // 5 indexes
...
Wst[5] = new Point(50, 390); // Tries to access a sixth, but is out of bounds

更改为。

Point[] Wst = new Point[6];

请记住,数组是从零开始的索引。

(2) 不使用的OnPaint。 你打电话thisPolygonOnLoad方法,它不会持续绘图。 移动你调用OnPaint形式的方法。

protected override void OnPaint(PaintEventArgs e) {
    base.OnPaint(e);
    thisPolygon();
}

(3) 若没有通过PaintEventArgs的 。 你不会在任何情况下的参数传递给您的thisPolygon方法,它甚至不会编译,因为它是。 通过从油漆参数OnPaint方法。

protected override void OnPaint(PaintEventArgs e) {
    base.OnPaint(e); // Pass in e
    thisPolygon();
}


文章来源: C# Forms - Using Paint methods?