Window AllowTransparency = true时WPF硬件加速了吗?

时间:2014-02-05 11:30:01

标签: c# .net wpf .net-4.5

我一直在寻找在WPF中制作自己的窗口框架,类似于Visual Studio。我已经读过设置AllowsTransparency = true会强制WPF以软件模式呈现。 This example是我混淆的源头(强调我的),其中指出:

  

只有当AllowTransparency设置为“True”时才能完成WPF窗口的自定义,会导致窗口是软件渲染的,可能没有那么快的GPU渲染。

但是,我在其他地方读过,使用窗口分层可以具有硬件加速功能,这就是WPF的功能。我还发现很难想象Visual Studio 2013--它的自定义框架和透明边框模糊 - 将是软件渲染的。

这个问题是否有明确的答案(假设Windows 7以后),当窗口AllowsTransparency为真时, WPF硬件加速了吗?

2 个答案:

答案 0 :(得分:7)

似乎透明窗口(AllowsTransparency = true)是针对Windows Vista及更高版本的硬件加速:HW Acceleration of Layered Windows

还有一个修补程序可以在Windows XP下运行:http://support.microsoft.com/kb/937106/en-us

答案 1 :(得分:1)

我也加上我的两美分。

是的,这是真的。从Vista开始,我们为分层窗口提供硬件加速,而且似乎还有XP的修补程序。

这是好消息停止的地方。

不要尝试使用AllowTransparency - 相信我,尽管它是硬件加速的,但它可以并且会出错。当然,请考虑一下您的用例:如果是简单的业余爱好项目,而不是企业级应用,那么,请继续

我个人经历过的一些问题:

  • 主要表现,信不信由你,#34;与AllowTransparency的表现问题"不是概念。动画很糟糕。
  • 与其他技术集成。我记得将DirectShow解决方案集成到AllowTransparency为true的窗口。它不起作用,因为DirectShow不支持渲染到分层的窗口。

这个guy似乎甚至在谈论软件渲染有时比硬件更快,对于分层窗口,我有点同意。我的经验也表明"硬件加速"在WPF上没什么了不起的。

我记得切换到软件渲染,并没有看到性能损失。事实上,我建议禁用硬件渲染,因为它很复杂,如果您针对不同配置的广泛区域(XP,XP64,Vista,Win7,不同的视频卡),它会导致视觉错误 - 着名黑点。

顺便说一句,VS2010 SP1禁用了Visual Studio上的硬件渲染,即使它支持它。为什么? "大量的崩溃报告源于硬件加速"

也就是说,Visual Studio2013不使用AllowTransparency - 如果我错了,请纠正我,但Snoop透露主窗口的AllowTransparency设置为false。

你怎么能有一个自定义的镀铬窗口,不是分层的& PERFORMS好吗?这是一个相当复杂的主题,但是如果您使用google for" WPF Custom Chrome库",则可以开始使用。我怀疑VS做了类似的事情。