在WinRT App中绘制了很多线条和其他形状

时间:2014-08-23 13:35:22

标签: c# canvas windows-runtime windows-8.1

在我的WinRT应用程序中,我需要在画布上绘制大约3000个对象,在那里我可以翻译和缩放视图。 Unfortunatley,在我的画布上添加了大约1500行后,我的Windows 8应用程序总是崩溃。实现这一目标的最佳做法是什么?

一种解决方案可能是渲染图像上的所有内容(我该怎么做?)。但是,我放松了对每个元素的轻松访问和编辑的安慰。

此外,我的规模和翻译速度非常慢。但是因为我还需要一个大概述,所以在画布中只放置可见区域的对象是没有意义的,因为在最小缩放时它仍然是所有内容并且缩放它仍然是非常滞后的原因,即添加和删除操作。

1 个答案:

答案 0 :(得分:1)

您应该采用几种不同的方法来实现顺畅的用户体验:

使用Quadtree,每当您向画布添加形状时,您也会将其放在四叉树上。当您放大图像的一部分时,这将很有用:您将知道图像的这一部分中有哪些对象;你将再次渲染它们(反对使用缓存/像素化版本)。

enter image description here

要克服可能冗长的绘图过程,您可以执行以下操作:

  • 以正确的比例显示缓存图像概述的部分
  • 使用进度指示器让用户了解程序正在运行此部分
  • 当微弱的渲染完成时,在屏幕上显示它

一个具体的例子:Google Maps就是这样做的。