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

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

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

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

这个问题是否有确定的答案(假设Windows 7以上), 当Window AllowsTransparency为真时WPF硬件加速吗?

似乎透明窗口( AllowsTransparency = true )是Windows Vista及更高版本的硬件加速:分层Windows的硬件加速

还有一个修补程序,使其在Windows XP下也可以工作: http : //support.microsoft.com/kb/937106/en-us

我也要加两分钱。

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

这是好消息停止的地方。

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

我亲身经历的一些问题:

  • 主要表现,不管信不信,“AllowTransparency的性能问题”并不构成概念。 动画很糟糕。
  • 与其他技术集成。 我记得将DirectShow解决方案集成到AllowTransparency为true的窗口。 它不起作用,因为DirectShow不支持渲染到分层的窗口。

这家伙似乎甚至在谈论软件渲染有时比硬件更快,对于分层窗口,我有点同意。 我的经验也表明,“硬件加速”在WPF上并不引人注目。

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

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

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

你怎么能有一个自定义的镀铬窗口,不是分层和PERFORMS好? 这是一个相当复杂的主题,但如果你谷歌搜索“WPF自定义Chrome库”,你可以开始使用。 我怀疑VS做了类似的事情。