我一直在寻找在WPF中制作自己的窗口框架,类似于Visual Studio。我已经读过设置AllowsTransparency = true
会强制WPF以软件模式呈现。 This example是我混淆的源头(强调我的),其中指出:
只有当AllowTransparency设置为“True”时才能完成WPF窗口的自定义,会导致窗口是软件渲染的,可能没有那么快的GPU渲染。
但是,我在其他地方读过,使用窗口分层,可以具有硬件加速功能,这就是WPF的功能。我还发现很难想象Visual Studio 2013--它的自定义框架和透明边框模糊 - 将是软件渲染的。
这个问题是否有明确的答案(假设Windows 7以后),当窗口AllowsTransparency
为真时, WPF硬件加速了吗?
答案 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 - 相信我,尽管它是硬件加速的,但它可以并且会出错。当然,请考虑一下您的用例:如果是简单的业余爱好项目,而不是企业级应用,那么,请继续。
我个人经历过的一些问题:
这个guy似乎甚至在谈论软件渲染有时比硬件更快,对于分层窗口,我有点同意。我的经验也表明"硬件加速"在WPF上没什么了不起的。
我记得切换到软件渲染,并没有看到性能损失。事实上,我建议禁用硬件渲染,因为它很复杂,如果您针对不同配置的广泛区域(XP,XP64,Vista,Win7,不同的视频卡),它会导致视觉错误 - 着名黑点。
顺便说一句,VS2010 SP1禁用了Visual Studio上的硬件渲染,即使它支持它。为什么? "大量的崩溃报告源于硬件加速"
也就是说,Visual Studio2013不使用AllowTransparency - 如果我错了,请纠正我,但Snoop透露主窗口的AllowTransparency设置为false。
你怎么能有一个自定义的镀铬窗口,不是分层的& PERFORMS好吗?这是一个相当复杂的主题,但是如果您使用google for" WPF Custom Chrome库",则可以开始使用。我怀疑VS做了类似的事情。