1

我的主窗口大小为 6000 x 6000 像素。在那个窗口中,我可以有很多控件(超过 5000 个),我们可以在我们想要的地方缩放/平移。

我在我的应用程序中添加了 10 个“电视屏幕”控件,每个控件都有 100 毫秒的刷新率。当我开始这个时,一切都崩溃了......

10 个对象,每个对象的刷新率为 100ms 太多了,当时 WPF 无法绘制它们。我的结论是 WPF 绘制我所拥有的东西非常慢......

一切都是用矢量绘制的,但是我尝试在它们上添加 .CacheMode 并且它也不起作用..

我能做些什么?

PS 我的电脑是 8 核,8 GB 内存,256 Mb 显卡(nvidia quadro nvs 295),win7 64 位

4

3 回答 3

3

WPF 使用软件渲染以防您超过图形适配器支持的最大分辨率。此外,5k 控制!极好的。WPF 并不是你想象的一切的灵丹妙药。您需要重新设计您的应用程序或更改您正在使用的技术。

于 2011-10-31T12:47:39.637 回答
2

看看ZoomableCanvas - 100 万个项目。这是 WPF 在使用本书中的每个优化时可以做的最好的例子。我建议您以该示例为例,并在显示器上以最大分辨率运行它。如果这不能很好地执行,那么 WPF 就无法做到这一点。

如果分辨率超过视频卡的分辨率,我不知道 WPF 默认为软件渲染。一个很好的警告!

关于高性能图形 API,我支持 Keiren,并说改用 DirectX(SlimDX提供托管包装器)。

于 2011-12-22T16:53:53.457 回答
2

努力减少应用程序中的控件数量。5K 相当多,我认为可能有办法减少这个数字。

例如,在 4.0 中使用TextBlocks而不是Labels作为 TextBlocks 呈现为 1 个控件,而 Labels 呈现为 3(我认为它在旧版本中超过 3 个)

此外,请检查您是否可以将 UI 虚拟化与您的某些控件一起使用。ListBox可以虚拟化 100 个项目中的一个,一次只能渲染 10 个。

于 2011-10-31T13:27:35.450 回答