我与需要创建各种自定义窗口类型的Win32应用程序工作。特别是,这些窗口常常是非矩形,具有阴影,或大部分是透明的。

我目前使用的与WS_EX_LAYERED UpdateLayeredWindow创建透明的窗户,然后我就可以借鉴我的任意图形。不过,我觉得分层的窗口进行限制,你不能有多层的子窗口,也可以分层的窗口中正常举办“正常”的Win32控制。

我们的代码库是几年前的,主要使用Win32和GDI,但我们在现代化事情的过程,它的时间来看看更新的技术。

我已经考虑过我的自定义窗口在WPF,但我很担心我读过关于“领空”的问题。看来,WPF使用分层的窗口实现其每像素alpha混合,因此看起来它也从我以前所经历的限制的影响。

我不知道多少(什么,真的)约Direct2D的,但这种技术听起来像它可能是有趣的。虽然,我找不到它的任何引用能够做窗口重叠。

所以,这一切使我想到我的问题:什么是在Windows下做窗口重叠最好的技术? (Vista和Win7在最低限度,XP将是很好的有)

我是不是忽略了一些,尤其是技术好?任何建议,将不胜感激。

有帮助吗?

解决方案

我推荐的Direct2D和DirectWrite,你获得高质量的渲染也是可笑的快速相比,无论GDI或任何在.NET空间完成。唯一的问题是,你需要Vista或更高版本的操作系统中使用它。

其他提示

WPF可以做你正在寻找很容易的,但,WPF(每像素透明窗)的这种特殊的功能往往是非常困难,原因是显卡驱动程序的bug(显然是图形硬件厂商不考分层的Direct3D每个像素的α值非常好)的窗户。

WPF的确使用了分层窗口的透明度,但它不使用“正常”的Win32控件,所有的WPF控件在一个窗口中只用一个win32的窗口,使它们的自我,它们都支持透明度。

在“领空”问题只发生在你举办一个WPF窗口内的一个WinForms控制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top