如何在 C# WinForm 项目中移动图片框时绘制轨迹



我是一名初学者,目前正在从事个人项目。我已经设法使用 W,A,S,D 键移动了一个图片框。我接下来想做的是让我的图片盒在移动的地方留下痕迹,并在它经过它们时擦除轨迹(有点像吃豆人(。

轨迹可以是一条线,也可以是一堆点。我尝试过绘制新的矩形作为轨迹,但它不起作用。就像我说的,我是一个初学者:)

这是我到目前为止所拥有的:

private void Form1_KeyDown(object sender, KeyEventArgs e, PaintEventArgs a)
{
int x = pictureBox1.Location.X;
int y = pictureBox1.Location.Y;
if (e.KeyCode == Keys.W) y -= speed;
else if (e.KeyCode == Keys.A) x -= speed;
else if (e.KeyCode == Keys.D) x += speed;
else if (e.KeyCode == Keys.S) y += speed;
Collision(new Rectangle(x, y, pictureBox1.Width, pictureBox1.Height), pictureBox2);
Collision(new Rectangle(x, y, pictureBox1.Width, pictureBox1.Height), pictureBox3);

if (movement == true)
{
pictureBox1.Location = new Point(x, y);
}
}
private void Collision(Rectangle rect, PictureBox b)
{
if (rect.IntersectsWith(b.Bounds))
{
movement = false;
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
movement = true;
}

您需要保留图片框(x,y)位置的历史记录,以便在每个Paint事件中使用它们进行绘图。

当窗体重绘时,它将使用背景色清除工作区(窗口(并绘制控件。此外,还可以挂钩到Form.Paint事件中,并在绘制控件之前执行其他绘制。

对于您的解决方案,我建议您有一个Queue<Point>对象,您可以在每次移动后添加位置,并在列表达到一定限制后删除旧位置。

就绘图而言,首先阅读一些Microsoft文档,了解它是如何工作的。

最新更新