代码之家  ›  专栏  ›  技术社区  ›  Oskar Kjellin

用鼠标移动时透明图片框闪烁

  •  0
  • Oskar Kjellin  · 技术社区  · 14 年前

    我做了一个由图片框组成的纸牌游戏。卡片可以放在一个空的地方是一个带有透明背景和三维边框的空图片框。然后我有一个当前的卡,它也是一个图片框,被鼠标移动事件移动。

    当我将一张卡拖到透明的图片框上时,在卡所在的地方会留下一张卡,直到我停止鼠标并刷新图片。当我将当前卡的背景设置为透明时也是这样,尽管卡被设置为图像(因此,如果我将背景设置为绿色,那么它将消失,这并不重要)。

    有什么解决办法吗?我试了两次,但没有成功。谢谢!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Hans Passant    14 年前

    从您的描述中不清楚您的代码是什么样子的。但是在修复这个问题之后,要注意下一个问题:控件重叠时,控件的透明度效果在Windows窗体中不起作用。你会看到父母的背景,你不会看到被你的移动卡重叠的图片框的内容。

    这不是WPF的问题,它有一个非常不同的渲染模型。但是,只要您想坚持使用Windows窗体,就需要使用窗体的onpaint()事件来实现这一点。先画卡片桌,再画股票,再画活动卡片。当卡移动时,调用invalidate()强制重新绘制表单,现在显示卡的新位置。

    换句话说,不要解决当前的问题。重新设计你的程序。

        2
  •  0
  •   MBZ    14 年前

    你可以打电话

    Application.DoEvents();
    

    在里面 pictureBox.Move 事件;因此所有背景图片都将重新绘制。