我刚刚发现了GDI +中不同构造函数之间的区别。去:
var bmp = new Bitmap(width, height, pixelFormat);
创建DDB(设备相关位图),而:
var bmp = new Bitmap(someFile);
创建DIB(设备无关位图)。这通常并不重要,除非处理非常大的图像(DDB将耗尽内存,并且根据机器及其视频内存耗尽不同大小的内存)。我需要创建一个DIB而不是DDB,但是指定高度,宽度和像素格式。有没有人知道如何在DotNet中这样做。还有一个指南指出Bitmap构造函数正在创建什么类型的Bitmap(DIB或DDB)?
答案 0 :(得分:3)
这样做的最佳方法是自己分配内存,然后使用以下命令创建位图:
var bmp = new Bitmap(width, height, stride, format, scan0)
通过这种方式,您可以创建巨大的位图,而不会出现内存不足错误。