Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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# 通过仅使用GDI+指定大小来创建Dib;和网络_C#_.net_Gdi+ - Fatal编程技术网

C# 通过仅使用GDI+指定大小来创建Dib;和网络

C# 通过仅使用GDI+指定大小来创建Dib;和网络,c#,.net,gdi+,C#,.net,Gdi+,我最近发现了GDI+中不同构造函数之间的差异。去: var bmp=新位图(宽度、高度、像素格式) 创建DDB(设备相关位图),而: var bmp=新位图(someFile) 创建DIB(独立于设备的位图)。这通常并不重要,除非在处理非常大的图像时(DDB将耗尽内存,并根据机器及其视频内存的不同大小耗尽内存)。我需要创建DIB而不是DDB,但需要指定高度、宽度和像素格式。有人知道如何在DotNet中做到这一点吗。另外,是否有关于由哪个位图构造函数创建哪种类型的位图(DIB或DDB)的指南?执行

我最近发现了GDI+中不同构造函数之间的差异。去:

var bmp=新位图(宽度、高度、像素格式)

创建DDB(设备相关位图),而:

var bmp=新位图(someFile)


创建DIB(独立于设备的位图)。这通常并不重要,除非在处理非常大的图像时(DDB将耗尽内存,并根据机器及其视频内存的不同大小耗尽内存)。我需要创建DIB而不是DDB,但需要指定高度、宽度和像素格式。有人知道如何在DotNet中做到这一点吗。另外,是否有关于由哪个位图构造函数创建哪种类型的位图(DIB或DDB)的指南?

执行此操作的最佳方法似乎是自己分配内存,然后使用以下方法创建位图:

var bmp = new Bitmap(width, height, stride, format, scan0)

通过这种方式,您可以创建巨大的位图,而不会出现内存不足错误。

如何从Dib创建较小的位图?你能帮我检查一下这个问题吗?