C# 我需要一个更快的方法来绘制图像,并渲染它们

C# 我需要一个更快的方法来绘制图像,并渲染它们,c#,wpf,image,image-processing,graphics,C#,Wpf,Image,Image Processing,Graphics,我正在开发一个可以让你用图像画画的应用程序。每次画笔笔划,图像都会被绘制到我的画布上。我基本上有一个带有图像控件集合的画布。当图像数量增加时,性能不太好 此外,使用RenderTargetBitmap.Render渲染画布时,有时会出现内存不足的异常,具体情况取决于画布上的图像数量、画布的尺寸以及正在使用的图像 有解决办法吗?通过在画布上渲染所有这些图像,清除画布,然后将新渲染的图像绘制到画布上,我可以在每次画笔笔划后进行光栅化。但这可能需要很长时间,在每一次画笔笔划之间都要等待,这听起来不太好

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

此外,使用RenderTargetBitmap.Render渲染画布时,有时会出现内存不足的异常,具体情况取决于画布上的图像数量、画布的尺寸以及正在使用的图像

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

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

以下是我的应用程序当前通过在画布上绘制图像控件所做的操作:

编辑: 我继续并实现了上面描述的光栅化技术。其实还不算太糟。
256x256帆布:
2048x2048画布:


演示是在一台相当旧的pc上测试的,我的目标是将其作为最低要求。我还在一台较新的pc上测试了它,即使在2048x2048上,它也能相当顺利地工作。不过我还是希望它能快一点。我想我可以在背景线程上渲染画布,但我必须想出一种方法,在画布渲染时能够绘制图像。我考虑的另一个选项是在不同线程上并行渲染画布(如果在C#中可能的话)。例如,2048x2048画布可以同时渲染为四个512x512部分。还有人建议我学习OpenGL,从头开始。你不能在WPF中为openGL应用程序制作gui,对吗

不确定是否以及如何将其应用于您的案例中,但您是否调查过飞锤图案?是否确实需要绘制一系列重叠图像?或者它是一个选项,以平铺画笔绘制笔划,如备注部分所示?您是否尝试过使用一些从这里第一次听到关于flyweight patter,我正在研究它。更改画笔步骤是我实现的功能之一,如果画笔步骤足够小,它应该重叠,因此我不能使用平铺画笔。我查看了writeablebitmapex的源代码,似乎向writeablebitmap添加图像是有限的。我看看能不能用。