在DirectDraw Video Surface前面,“透明”Windows窗体闪烁

时间:2011-05-24 09:00:22

标签: c# winforms transparency directdraw

我有一个应用程序,在我无法控制的情况下,几个Windows窗体都有一个TransparencyKey属性集。当这些窗口覆盖(在前面)具有DirectDraw视频表面的另一种形式时,前景形式闪烁(部分显示形式并部分显示下面的视频)。问题是,TransparencyKey的颜色不会出现在应用程序的任何地方,因此NOTHING应该是透明的...换句话说,结果应该是前景形式完全不透明。

Flickering scenario

当与某些形式或其他设置为透明的Windows窗体结合使用时,是否有任何人有使用DirectDraw表面闪烁的经验?我已经为此工作了好几周,没有成功。谢谢!

1 个答案:

答案 0 :(得分:1)

我很抱歉,但我建议你完全放弃这个目标并尝试以其他方式去做。

DirectDraw是在屏幕上显示内容的一种方式,并且使用GDI完成具有区域(通过所谓的“透明键颜色”作为掩码创建的区域)的表单。正如我所看到的那样(并希望以其他方式证明) - 无论如何你都无法将这两个窗户结合起来。

您可能会在不同的Windows上获得不同的结果,具体取决于版本,使用的图形卡等。

另一方面,您可以破解那些您无法控制的表单并从中删除TransparencyKey属性吗?即使使用Win32 API?