我正在使用包含大量元素的WPF Canvas。它需要能够平移和缩放。 WPF无法处理画布的布局,因为它有太多的元素(我不知道有多少,但XAML文件超过20mb)。
使用缩放对画布进行缩放和平移,并在画布'rendertransform上翻译变换。
我发现的一个好方法是使用CacheMode。这解决了所有平移问题,因为我为缩放级别生成了缓存并设置了它。很容易,像这样:
canvas.CacheMode = new BitmapCache(scale);
问题在于我每次缩放比例时都需要这样做(即用户放大时)。
我知道渲染画布需要一些时间,这可能是不可避免的。但是,如何将该渲染移动到另一个线程,以便它不会阻止整个UI?
我理解后台工作者和调度程序等的概念,但我不知道如何处理这个问题,当实际占用的任务是我只能在UI线程中访问的属性的设置时
是否有可能以某种方式在另一个线程中生成缓存,然后以某种方式将其传输到UI?
关于如何减轻对UI的影响的任何其他好主意?