0

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

问题是,当我运行演示项目时,它会在绘制几秒钟后开始极度滞后。但是,我意识到这可能是由于该技术所需的形状数量过多,这是我的主要问题:

网站上的演示到底怎么不落后于我画了多少,而我的本地项目应该有完全相同的代码马上滞后?

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

4

1 回答 1

0

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

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

于 2013-04-09T13:26:56.120 回答