【发布时间】:2010-12-13 07:08:56
【问题描述】:
我正在使用需要创建各种自定义窗口类型的 Win32 应用程序。特别是,这些窗口通常是非矩形的,有阴影,或者大部分是透明的。
我目前正在使用WS_EX_LAYERED 和UpdateLayeredWindow 创建透明窗口,然后我可以在上面绘制任意图形。但是,我发现分层窗口的局限性在于您不能有分层子窗口,分层窗口也不能正确承载“普通”Win32 控件。
我们的代码库已有数年历史,主要使用 Win32 和 GDI,但我们正在进行现代化改造,是时候研究更新的技术了。
我考虑过在 WPF 中进行自定义窗口化,但我担心我所读到的有关“空域”问题的内容。似乎 WPF 使用分层窗口来完成其每个像素的 Alpha 混合,因此它似乎也会受到我之前遇到的限制的影响。
我对 Direct2D 了解不多(真的一无所知),但该技术听起来可能很有趣。不过,我找不到任何关于它能够做覆盖窗口的参考。
所以,所有这些都让我想到了我的问题:在 Windows 下做覆盖窗口的最佳技术是什么? (至少 Vista 和 Win7,XP 会很不错)
我是否忽略了一些特别好的技术?任何建议将不胜感激。
【问题讨论】:
标签: wpf direct2d layered-windows