Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Drawing.Graphics超大图像_C#_Image_Graphics_Bitmap_Drawing - Fatal编程技术网

C# 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

我正在创建一个基本的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, x, y, w, h);
}
我正在处理的一个特定文件大约有十个8000x8000像素的.tif文件。不用说,上面提到的情况在它的脸上表现得很好,但有一个OutOfMemory例外


这些文件被压缩到每个数兆字节。有人能提出更好的渲染策略吗?

您使用的是.NET 4吗?如果是这样,您可以使用内存映射文件将数据“加载”到内存中,只读取需要在屏幕上渲染的位。

我估计十个8000x8000像素.tif文件约为2.56GB。您有多少内存?@Mitch:如果我没记错,我在某处读到一个.NET进程的最大工作大小是2GB,所以这个应用程序失败是很合理的。它必须在典型的客户机上工作,所以我不能强迫.NET以其他方式运行。我正在寻找一种内存占用较少的策略来渲染这些图像。顺便说一句,autocad viewer没有问题(它的渲染速度通常要慢得多,但对于其他所有内容)。