【问题标题】:When PictureBox location property is changed the old image is still shown更改 PictureBox 位置属性时,仍会显示旧图像
【发布时间】:2016-01-21 02:11:05
【问题描述】:

我在另一个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();
    }

所以在这种情况下,平面图像会随心所欲地移动,但旧图像也会显示出来,我不想要它。我尝试了几件事,但没有结果。我的代码有什么问题?

【问题讨论】:

  • 从您的代码中不清楚您是如何更新图像的。您可以使用类似的方法来清除图片框。 Graphics graphic = Graphics.fromimage(pictbox.Image); graphic.Clear(Color.Red)//Color to fill the background and reset the box stackoverflow.com/a/5856442/1274820 在位图上使用Graphics.fromImage 方法绘制平面图像,然后使用图片框显示位图可能是一个更好的主意。我会做类似的事情,而不是在图片框内放置图片框。
  • 如果在添加新图片之前清除图片框会怎样?
  • @JustDoIt 我并没有真正添加新图像,我只想更改其位置。如果我这样做pbPlane1.Image=null,那我就看不到我的飞机了
  • 我找到了一个简单的答案,谢谢大家的帮助
  • 哦,好吧,我误解了你的问题

标签: c# winforms


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2016-06-27
    • 2013-11-30
    相关资源
    最近更新 更多