我使Point数组指定了一些点,但我无法在for循环中访问它们。有什么可以帮助我的?
Point[] _points;
private Point[] Points()
{
Rectangle rc = ClientRectangle;
Point[] _points=new Point[]
{
new Point{X=0,Y=ClientRectangle.Height/2},
new Point{X=ClientRectangle.Width*22/277,Y=0},
new Point{X=ClientRectangle.Width*68/277,Y=ClientRectangle.Height},
new Point{X=ClientRectangle.Width*115/277,Y=0},
new Point{X=ClientRectangle.Width*161/277,Y=ClientRectangle.Height},
new Point{X=ClientRectangle.Width*206/277,Y=0},
new Point{X=ClientRectangle.Width*254/277,Y=ClientRectangle.Height},
new Point{X=ClientRectangle.Width,Y=ClientRectangle.Height/2}
};
return _points;
}
protected override void OnPaint(PaintEventArgs pe)
{
Graphics gfx = pe.Graphics;
Pen kalem = new Pen(Color.Black);
for (int i = 0; i < _points.Length; i++)
{
gfx.DrawLine(kalem,_points[i],_points[i].Y); =======>>>ERROR HERE
}
}
答案 0 :(得分:2)
在函数中声明变量(_points)时,会覆盖属性的范围。您粘贴的代码从未将任何内容赋予_points,这意味着该数组为空。
编辑: 你不能传递_point [i] .Y,因为该方法将PointF作为参数而_point [i] .Y是一个int。
答案 1 :(得分:0)
gfx.DrawLine(kalem,_points[i],_points[i].Y)
你应该像_points [i]一样传递_points [i] .X。我想
答案 2 :(得分:0)
我认为这就是你真正想要的。
for (int i = 0; i < _points.Length - 1; i++)
{
gfx.DrawLine(kalem,_points[i],_points[i+1]);
}
这将从第一个点到第二个点然后从第二个点到第三个点绘制一条线,依此类推。如果您需要关闭形状,请在for
循环后添加以下内容。
// No point in drawing a closing line if there are not at least 3 points.
if(_points.Length > 2)
{
gfx.DrawLine(kalem,_points[_points.Length - 1],_points[0]);
}