C# 当PictureBox location属性更改时,仍会显示旧图像

C# 当PictureBox location属性更改时,仍会显示旧图像,c#,winforms,C#,Winforms,我在另一个pictureBox中有一个pictureBox。我试着在地图上模拟飞机飞行。我做了一个简单的循环来完成这个任务。守则: for (var i = 0; i < 23; i++) { Fuel -= 1; Changed(i); } private void Changed(int a) { Thread.Sleep(350);

我在另一个
pictureBox
中有一个
pictureBox
。我试着在地图上模拟飞机飞行。我做了一个简单的循环来完成这个任务。守则:

for (var i = 0; i < 23; i++)
        {
                Fuel -= 1;
                Changed(i);               
        }

private void Changed(int a)
    {
        Thread.Sleep(350);
        pbPlane1.Location = new Point(525-(25*a), 235);
        pbPlane1.Refresh();
    }
for(变量i=0;i<23;i++)
{
燃料-=1;
更改(i);
}
私有无效已更改(int a)
{
睡眠(350);
pbPlane1.位置=新点(525-(25*a),235);
pbPlane1.Refresh();
}

因此,在这种情况下,平面图像按我所希望的方式移动,但旧图像也会显示出来,我不希望这样。我试过几次,但都没有结果。我的代码有什么问题?

您需要刷新地图图像,而不是刷新平面图像。 代码应如下所示:

private void Changed(int a)
{
    Thread.Sleep(350);
    pbPlane1.Location = new Point(525-(25*a), 235);
    pbMap1.Refresh();      // refresh the background picturebox
}

您的代码不清楚您是如何更新图像的。您可以使用类似的方法清除picturebox<代码>图形图形=Graphics.fromimage(pictbox.Image);graphic.Clear(Color.Red)//Color填充背景并重置框最好在位图上使用
Graphics.fromImage
方法绘制平面图像,然后使用picturebox显示位图。我会做类似的事情,而不是在图片盒中放一个图片盒。如果在添加新图片盒之前清除图片盒会怎么样?@JustDoIt我不是真的添加新图片,我只是想更改它的位置。如果我这样做了,我就看不到我的飞机了我找到了一个简单的答案,谢谢你们的帮助好吧,我误解了你们的问题