Hye那里我是c#的新手,需要使用数组绘制矩形。我的代码是:
Rectangle[] rec;
int rec_part=2;
public Form1()
{
InitializeComponent();
rec = new Rectangle[rec_part];
for (int i = 0; i <rec_part; i++)
{
rec[i] = new Rectangle(10, 100, 40,40);
}
}
所以我的代码当时只绘制了一个Rectangle:
Graphics g;
private void Form1_Paint(object sender, PaintEventArgs e)
{
g = e.Graphics;
for (int i = 0; i<(rec_part); i++)
{
g.FillRectangle(new SolidBrush(Color.Blue), rec[i]); //exception here
}
}
问题是我想移动我的Rectangle,同时我想增加矩形数组长度!即。
int speed = 2;
private void timer1_Tick(object sender, EventArgs e)
{
for (int i = 0; i < rec.Length; i++)
{
rec[i].X += speed;
rec_part+=1; // here i want to increment the rectangles
this.Refresh();
}
}
我的目标是在计时器开始工作时增加矩形的数量。但我得到了超出界限的索引!有人可以提出任何想法或建议,我该怎么办呢! 提前谢谢!
答案 0 :(得分:0)
如果您只是更改代码
if (rec_part == rec.Length)
rec_part = 0;
else
rec_part += 1;
它会起作用。但你能详细说明你想要做什么吗?
答案 1 :(得分:0)
您无法向数组添加元素。使用清单:
private List<Rectangle> rectangleList = new List<Rectangle>();
然后你可以添加任意数量的矩形:
rectangleList.Add(new Rectangle(10, 100, 40,40));
在C#中,您可以使用foreach-loop而不是for循环:
foreach(var r in rectangleList)
{
g.FillRectangle(new SolidBrush(Color.Blue), r);
}