gpt4 book ai didi

wpf - 在 Windows 上绘制叠加图形的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-05 00:42:55 25 4
gpt4 key购买 nike

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

我目前正在使用 WS_EX_LAYEREDUpdateLayeredWindow创建透明窗口,然后我可以在上面绘制我的任意图形。但是,我发现分层窗口的局限性在于您不能拥有分层子窗口,分层窗口也不能正确承载“正常”Win32 控件。

我们的代码库已有数年历史,主要使用 Win32 和 GDI,但我们正在对事物进行现代化改造,是时候研究更新的技术了。

我考虑过在 WPF 中做我的自定义窗口,但我担心我读到的关于“空域”问题的内容。似乎 WPF 使用分层窗口来完成其每像素 alpha 混合,因此它似乎也会受到我以前遇到的限制的影响。

我对 Direct2D 知之甚少(任何事情,真的),但这项技术听起来可能很有趣。虽然,我找不到任何关于它能够做覆盖窗口的引用。

所以,所有这些都让我想到了我的问题:在 Windows 下做覆盖窗口的最佳技术是什么? (至少 Vista 和 Win7,XP 最好有)

我是否忽略了一些特别好的技术?任何建议,将不胜感激。

最佳答案

WPF 可以很容易地完成您正在寻找的工作,但是,由于图形驱动程序错误,WPF(具有每像素透明度的窗口)的这一特殊功能往往会带来很大的问题(显然图形硬件制造商不会使用 per 测试分层 Direct3D 窗口)。像素 alpha 值很好)。

WPF 确实使用分层窗口来实现透明,但它不使用“普通”win32 控件,一个窗口中的所有 wpf 控件仅使用一个 win32 窗口来呈现它们自己,它们都支持透明度。

“空域”问题仅在您在 WPF 窗口内托管 WinForms 控件时发生。

关于wpf - 在 Windows 上绘制叠加图形的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1678378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com