我的主窗口有6000 x 6000像素。在那个窗口中,我可以有很多控件(超过5000个),我们可以缩放/平移我们想要的位置。
我在我的应用程序中添加了10个“电视屏幕”控件,每个控件的刷新率为100毫秒。 当我开始这个时,一切都崩溃了......
每个刷新率为100ms的10个对象太多,WPF当时无法绘制它们。我的结论是,WPF绘制的东西很慢......
所有内容都是在向量中绘制的,但我尝试在它们上添加.CacheMode并且它也不起作用..
我该怎么办?
P.S。我的电脑是win7 64位上的8核,8 GB Ram,256 Mb视频卡(nvidia quadro nvs 295)
答案 0 :(得分:3)
WPF使用软件渲染,以防您超出图形适配器的最大支持分辨率。而且,5k控制!难以置信。对于你想象的一切,WPF并不是一颗银弹。您需要重新设计应用程序或更改正在使用的技术。
答案 1 :(得分:2)
努力减少应用程序中的控件数量。 5K是相当多的,我认为可能有办法减少这个数字。
例如,使用TextBlocks
而不是Labels
,因为TextBlocks呈现为1个控件,而标签在4.0中呈现为3(我认为它在旧版本中超过3个)
此外,检查并查看是否可以将UI虚拟化与某些控件配合使用。像ListBox
100个项目的东西可以虚拟化,一次只渲染10个。
答案 2 :(得分:2)
看看ZoomableCanvas - 1 million items。这是WPF在使用本书中的每个优化时可以做的最好的例子。我建议您采用该示例并在监视器上以最大分辨率运行它。如果这不能很好地执行,那么WPF就无法做到这一点。
如果分辨率超过视频卡的分辨率,我不知道WPF默认为软件渲染。一个很好的警告要知道!