使用鼠标移动时,透明的图片框会闪烁

时间:2010-07-30 19:12:06

标签: c# .net winforms transparent picturebox

我制作了一个由图片盒构成的纸牌游戏。可放入卡片的空白处是一个带有透明背景和3d边框的空白图片框。然后我有一张当前卡片,它也是一个由MouseMove事件移动的图片盒。

只要我将卡片拖到透明PictureBox上,就会有卡片留在卡片所在的地方,直到我停止鼠标并让图片刷新。当我将当前卡片的背景设置为透明时也是这种情况,尽管将卡片设置为图像(因此如果我将背景设置为绿色它就会消失,因此它并不重要)。

这有什么解决方法吗?我尝试过DoubleBuffered但没有成功。谢谢!

2 个答案:

答案 0 :(得分:1)

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

这不是WPF的问题,它有一个非常不同的渲染模型。但只要您想坚持使用Windows窗体,就需要使用窗体的OnPaint()事件来完成此工作。绘制卡片表,然后是股票,然后绘制移动的卡片。当卡移动时,调用Invalidate()以强制重新绘制表单,现在将卡显示在新位置。

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

答案 1 :(得分:0)

你可以打电话

Application.DoEvents();

pictureBox.Move事件中;所以所有的背景图片都会自己重绘。