重现的步骤:
在我的电脑上,CPU使用率为80%。
我检查了RenderCapability.Tier,它是2 - 意味着它应该通过硬件呈现所有内容。
但它不起作用,为什么?
答案 0 :(得分:2)
更多信息会很有用,例如你使用的多边形类型,你的显卡以及你正在使用的WPF版本。
我尝试了你的例子,500个简单多边形没有任何问题。 (Core 2 Duo,8800 GTS)。你的例子以及其他时候你有相当复杂的内容不会经常变化,但你正在改变它可以从BitmapCache大大受益。
<Canvas.CacheMode>
<BitmapCache />
</Canvas.CacheMode>
使用BitmapCache,您应该能够根据需要转换任意数量的元素,尽管只要需要重新渲染,您仍然会遇到性能损失。如果您使用的是复杂路径,也可以尝试使用freezing。
答案 1 :(得分:1)
WPF仍然会对需要在屏幕上绘制的内容进行计算。您尚未指定这是布局还是渲染转换,因为这会产生性能差异。您需要小心将变换用作msdn points out
如果在不需要布局系统完全通过的场景中调用LayoutTransform,则会导致应用程序性能下降。将LayoutTransform应用于Panel的Children集合时,它会触发布局系统的新传递,并强制重新测量和重新排列所有屏幕上的对象。如果要更新完整的应用程序用户界面(UI),则此功能可能正是您所需要的。但是,如果您不需要完整布局传递,请使用RenderTransform属性,该属性不会调用布局系统,因此,对于此方案通常是更好的选择。