C# System.Drawing.Graphics超大图像
我正在创建一个基本的autocad viewer,它必须处理非常大的图像 我正在使用System.Drawing.Graphics通过以下方式渲染图像:C# System.Drawing.Graphics超大图像,c#,image,graphics,bitmap,drawing,C#,Image,Graphics,Bitmap,Drawing,我正在创建一个基本的autocad viewer,它必须处理非常大的图像 我正在使用System.Drawing.Graphics通过以下方式渲染图像: Bitmap imageData; public void Init(string filepath) { imageData = new Bitmap(filepath); } public void Render(System.Drawing.Graphics ctx) { ctx.DrawImage(imageData
Bitmap imageData;
public void Init(string filepath)
{
imageData = new Bitmap(filepath);
}
public void Render(System.Drawing.Graphics ctx)
{
ctx.DrawImage(imageData, x, y, w, h);
}
我正在处理的一个特定文件大约有十个8000x8000像素的.tif文件。不用说,上面提到的情况在它的脸上表现得很好,但有一个OutOfMemory例外
这些文件被压缩到每个数兆字节。有人能提出更好的渲染策略吗?您使用的是.NET 4吗?如果是这样,您可以使用内存映射文件将数据“加载”到内存中,只读取需要在屏幕上渲染的位。我估计十个8000x8000像素.tif文件约为2.56GB。您有多少内存?@Mitch:如果我没记错,我在某处读到一个.NET进程的最大工作大小是2GB,所以这个应用程序失败是很合理的。它必须在典型的客户机上工作,所以我不能强迫.NET以其他方式运行。我正在寻找一种内存占用较少的策略来渲染这些图像。顺便说一句,autocad viewer没有问题(它的渲染速度通常要慢得多,但对于其他所有内容)。