代码之家  ›  专栏  ›  技术社区  ›  Kris Erickson

仅通过使用gdi+和dotnet指定大小来创建DIB

  •  2
  • Kris Erickson  · 技术社区  · 15 年前

    我最近发现了gdi+中不同的构造函数之间的区别。去:

    var bmp = new Bitmap(width, height, pixelFormat);

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

    var bmp = new Bitmap(someFile);

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

    1 回复  |  直到 15 年前
        1
  •  3
  •   Kris Erickson    15 年前

    最好的方法是自己分配内存,然后用以下命令创建位图:

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

    这样就可以创建巨大的位图,而不会出现内存不足的错误。