嘿,我是 C# 新手,我自己学习它。我的问题是我想在旧矩形上附加一个新矩形并使用计时器将它们全部移动我的代码是:
Rectangle[] rec;
int rec_part = 4;
int rec_x = 0;
Color c = Color.FromArgb(255, 255, 255);
public Form1()
{
InitializeComponent();
rec = new Rectangle[rec_part];
for (int i = 0; i < rec_part; i++)
{
rec_x += 43;
rec[i] = new Rectangle(rec_x, 100, 40,40);
}
}
它将初始化 4 个矩形,然后:
Graphics g;
private void Form1_Paint(object sender, PaintEventArgs e)
{
g = e.Graphics;
g.SmoothingMode = SmoothingMode.AntiAlias;
for (int i = 0; i < rec_part; i++)
g.FillRectangle(new SolidBrush(Color.Red), rec[i]);
}
这将在窗体上绘制 4 个矩形控件,然后:
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 append a new Rectangle to the existing rectangles
\\ the array size is to increment so that that a new rectangle will append
}
Refresh();
}
但问题是我的代码中引发了“索引超出范围”异常,但如果我将计时器用作:
int speed = 2;
private void timer1_Tick(object sender, EventArgs e)
{
for (int i = 0; i < rec.Length; i++)
{
rec[i].X += speed;
if (rec_part == rec.Length)
rec_part = 0;
else
rec_part += 1;
}
Refresh();
}
这段代码一切正常,但它开始闪烁太多,以至于无法完美地观看它,并且每次它绘制 4 个新矩形,而我想附加一个新矩形!对不起我的英语不好。有人可以帮我解决问题吗?谢谢。