2010-01-27 26 views
2

我剛剛發現了GDI +中不同構造函數之間的區別。展望:通過只用GDI +和DotNet指定尺寸來創建Dib

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

創建一個DDB(設備相關位圖),而:

var bmp = new Bitmap(someFile);

創建一個DIB(設備無關位圖)。除非處理非常大的圖像(DDB將耗盡內存,並根據機器和視頻內存的不同而使用不同大小的內存),否則這通常不重要。我需要創建一個DIB而不是DDB,但指定高度,寬度和像素格式。有誰知道如何在DotNet中做到這一點。還有什麼類型的位圖(DIB或DDB)正在創建位圖構造函數的指南?

回答

3

這似乎做到這一點,最好的辦法是自己分配的內存,然後再創建位圖:

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

這樣你就可以不必在內存不足的錯誤創造巨大的位圖。

+0

如何從Dib創建較小的位圖?你可以幫忙檢查這個問題嗎? http://stackoverflow.com/questions/37152072/create-bitmapsource-of-fixed-size-from-dibintptr – Xiaokun 2016-05-11 02:57:13