我需要一种更快的方式来绘制图像并渲染它们

时间:2014-09-16 02:45:57

标签: c# wpf image image-processing graphics

我正在开发一款可以让你用图像绘画的应用程序。每次画笔描边,图像都会绘制到我的画布上。我基本上有一个带有Image控件集合的画布。当图像数量增加时,性能不太好。

另外,使用RenderTargetBitmap.Render渲染画布会给我一个不足的内存异常,有时取决于画布上的图像数量,以及我正在绘制的画布和图像的尺寸。

有解决方案吗?我可以在每次画笔描边后通过在画布上渲染所有这些图像,清除画布,然后将新渲染的图像绘制到画布来进行栅格化。这可能需要太长时间,不得不在每个画笔笔划之间等待听起来不太好。

那么我的选择是什么?我能用WriteableBitmap完成所有这些吗?我可以将多个图像添加到一个WriteableBitmap中,并且速度快吗?或者是否有一些我可以用来绘制和操作(缩放,平移,旋转)图像的库?

以下是我的应用目前通过将图像控件绘制到画布上所做的事情: enter image description here

修改: 我继续实施上面描述的光栅化技术。实际上并不太糟糕。
256x256画布:http://i.minus.com/iFXnyYg3N3qjx.gif
2048x2048画布:http://i.minus.com/i5GId8iM8hU28.gif

该演示在一台非常老的电脑上进行了测试,我的目标是最低要求。我还在一台新电脑上进行了测试,即使在2048x2048上也能正常运行。我仍然希望它更快。我想我可以在后台线程上渲染画布,但我必须想出一种能够在画布渲染时绘制图像的方法。我想到的另一个选择是在不同的线程上并行渲染画布(如果可能在C#中)。因此,例如,2048x2048画布可以同时渲染为四个512x512部分。还有人建议我学习OpenGL并从头开始。你不能在WPF中为一个openGL应用程序做一个gui吧?

0 个答案:

没有答案