UWP/Win2D - 将绘图保存在内存中

UWP/Win2D - save drawing in memory

代码示例会很好,但只要提供一些关于处理这种情况的最佳方法的一般性建议就足够了。

我正在 Win2D 上渲染图像 Canvas。图像首先由瓦片位图拼凑而成,形成一个大图像。我将其称为 "Base Image"。

然后我使用各种 "draw" 调用来标记基本图像,我还将其他位图放在基本图像上,以创建最终图像。

用户可以向任意方向滚动图像and/or放大和缩小图像。跟踪鼠标移动并在 canvas 上方显示类似工具提示的内容,以便为用户提供详细信息。每次用户做任何影响图像的事情时,我都会重新绘制整个图像。在某些情况下,基本图像由多达 46,000 个微小位图组成。

即使使用这种笨手笨脚的方法,图像也会很快自行重绘,但这感觉是最糟糕的方法。

我的直觉告诉我,我应该渲染一次基本图像,将其保存在内存中,然后根据需要将其复制到 canvas 上。之后,叠加必要的位以完成图像。我找不到任何建议如何为此目的保留内存中位图的 material。我也不知道这是否是最合适的方法。

任何关于最合适的行动方案的指导或建议将不胜感激。

保罗

您的直觉在这里是完全正确的 - 您很可能通过只绘制一次图像然后重新使用它的缓存版本来获得巨大的性能提升。

CanvasRenderTarget 是解决此问题的方法:查看 https://microsoft.github.io/Win2D/html/T_Microsoft_Graphics_Canvas_CanvasRenderTarget.htm and https://microsoft.github.io/Win2D/html/Offscreen.htm 作为起点。