0

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

所以我的代码当时只画了一个矩形:

        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

            }
        }

问题是我想移动我的矩形,同时我想增加矩形数组长度!IE

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


        }

我的目标是在计时器开始工作后增加矩形的数量。但是我得到了索引异常!有人可以给出任何想法或建议我该怎么做!提前致谢!

4

2 回答 2

0

如果你只是更改代码

if (rec_part == rec.Length)
    rec_part = 0;
else
    rec_part += 1; 

它会起作用的。但是你能详细说明你想做什么吗?

于 2014-05-26T07:24:28.107 回答
0

您不能将元素添加到数组中。使用列表:

private List<Rectangle> rectangleList = new List<Rectangle>();

然后,您可以添加任意数量的矩形:

rectangleList.Add(new Rectangle(10, 100, 40,40));

在 C# 中,您可以使用 foreach 循环而不是 for 循环:

foreach(var r in rectangleList)
{
   g.FillRectangle(new SolidBrush(Color.Blue), r);
}
于 2014-05-26T07:24:58.927 回答