我正在创建一个处理非常大的图像文件的cad查看器,并尝试对其进行优化,以实现尽可能高的帧速率和较低的内存占用。
它使用GDI +渲染到面板上。
当前的缺陷在于图像渲染。我使用的某些文件引用图像特别大(8000x8000像素)。我通过仅在可见时加载它们并在不可见时处理它们来优化内存使用。这样可以减少程序用尽内存的机会,但可以防止图像加载和卸载的频率太高。但是,渲染图像本身(context.DrawImage)仍然会产生很大的开销。
我现在正在探索将图像拖拉到某种较小的缓冲区中,渲染该缓冲区(通常较小),然后在缩放级别发生明显变化时刷新/重建的方法。
问题是,我在GDI中找不到关于此的任何规定。谁能建议我该如何实现?
最佳答案
我不认为GDI专为如此高速的图像更新而设计。如果您要滚动图像并跟踪鼠标的每次移动,请尝试移动图像的各个部分并填写由该移动打开的空间。本质上是重用程序员在CPU速度慢而RAM很小的时候平滑滚动/平移图形时使用的技巧。
关于c# - C#GDI +/System.Drawing.Graphics-创建缓冲区并手动发短信?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5376987/