我最近发现了gdi+中不同的构造函数之间的区别。去:
var bmp = new Bitmap(width, height, pixelFormat);
创建DDB(设备相关位图),而:
var bmp = new Bitmap(someFile);
创建DIB(与设备无关的位图)。这通常并不重要,除非处理非常大的图像(DDB将耗尽内存,并根据机器及其视频内存的不同大小耗尽内存)。我需要创建一个DIB而不是DDB,但是要指定高度、宽度和像素格式。有人知道如何在网络上做到这一点吗?另外,是否有关于由哪个位图构造函数创建的位图类型(DIB或DDB)的指南?
最好的方法是自己分配内存,然后用以下命令创建位图:
var bmp = new Bitmap(width, height, stride, format, scan0)
这样就可以创建巨大的位图,而不会出现内存不足的错误。