Silverlight canvas freedraw表现不佳

时间:2013-04-04 08:48:05

标签: performance silverlight canvas drawing

我正在制作一个Silverlight网站,其中包括类似油漆的功能,包括freedraw。为此,我使用了以下网站上描述的技术:http://codeding.com/articles/freehand-drawing-in-silverlight

问题是,当我运行演示项目时,在绘制几秒钟后它将开始非常滞后。我意识到这可能是由于这种技术需要的形状数量造成的,但这是我的主要问题:

网站上的演示实际上并没有落后于我绘制的数据,而我的本地项目应该有完全相同的代码会立即落后吗?

我试图找到一些关于整体提高画布性能的方法,但我发现的唯一一件事就是将绘图转换为静态图像,因为我使用了撤消/重做功能,所以这并不是很理想。

1 个答案:

答案 0 :(得分:0)

添加到Canvas的形状数量不应该是滞后的原因,必须有其他的东西,比如将图形转换为图像以进行撤消/重做功能。对于撤消/重做,您可以保存笔画信息而不是图像。创造&在每次撤消/重做操作期间存储图像将消耗太多内存。

笔画只是从开始(mousedown事件)到结束(mouseup事件)的一组点,一组笔画形成一个完整的图形。您始终可以使用保存的笔划信息重新创建图形(就像您可以使用图像重新创建一样)。您可以使用简单的数据结构(如List<List<Point>>)来存储完整的图形,这非常节省内存,而不是创建&amp;存储图像本身。