“透明” Windows 窗体在 DirectDraw 视频表面前闪烁

发布于 2024-11-09 12:38:35 字数 358 浏览 4 评论 0原文

我有一个应用程序,其中多个 Windows 窗体设置了 TransparencyKey 属性,超出了我的控制范围。当这些窗口覆盖(位于其前面)另一个具有 DirectDraw 视频表面的窗体时,前景窗体会闪烁(部分显示该窗体,部分显示下面的视频)。问题是,TransparencyKey 的颜色不会出现在应用程序中的任何位置,因此没有任何内容应该是透明的...换句话说,结果应该是前景窗体完全不透明。

闪烁场景

有没有人有过 DirectDraw 表面与某种形式或其他设置的 Windows 窗体结合使用时闪烁的经验透明的?我已经为此工作了几个星期,但没有成功。谢谢!

I have an application where, beyond my control, several Windows Forms have a TransparencyKey property set. When these windows cover (are in front of) another form which has a DirectDraw video surface, the foreground form flickers (partly showing the form and partly showing the video beneath). The thing is, the color of the TransparencyKey doesn't appear anywhere in the application, so NOTHING should be transparent... in other words, the result should be that the foreground form is completely opaque.

Flickering scenario

Does anyone have experience with DirectDraw surfaces flickering when combined with Windows Forms that are in some form or other set up to be transparent? I've worked on this for weeks, with no success. Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓬勃野心 2024-11-16 12:38:35

很抱歉,但我建议您完全放弃该目标并尝试以其他方式实现。

DirectDraw 是在屏幕上显示内容的一种方式,而带有区域的表单(作为所谓“透明关键颜色”的遮罩动态创建)是使用 GDI 完成的。正如我所看到的(并且希望以其他方式证明) - 无论如何你都无法组合这两个窗口。

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

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

I'm sorry but I would suggest that you abandon that goal completely and try to do it some other way.

DirectDraw is one way of displaying stuff on the screen, and forms with regions (that are created on the fly as masks from so called 'transparent key color') are done with GDI. As I see it (and would like to be proven otherwise) - you won't be able to combine that two windows anyway.

And you will probably get different results on different Windows, depending on the version, graphics card used, and so on.

On the other side, can you hack those forms that you don't have the control over and remove TransparencyKey property from them? Even with Win32 API?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文