我使用CreateBitmap創建的位圖創建使用CreatePatternBrush的畫筆。CreatePatternBrush和屏幕顏色深度
位圖是1像素寬和24像素高,我有每個像素的RGB值,所以我創建了一個rgbquads數組並將其傳遞給CreateBitmap。
當屏幕顏色深度爲32bpp時,這很有效,因爲我創建的位圖也是32bpp。
當屏幕顏色深度不是32bpp時,這會失敗,我理解它爲什麼會這樣做,因爲我應該創建一個兼容的位圖。
看來我應該使用CreateCompatibleBitmap來代替,但是如何將像素數據放入該位圖?
我也讀到CreateDIBPatternBrushPt,CreateDIBitmap,CreateDIBSection等
我不明白什麼是一個DIBSection,並找到主題一般混亂。
我明白我需要一個與屏幕顏色深度相同的位圖,但是如何創建只有32bpp像素數據的位圖?
謝謝你的回答,真的。 在編寫任何代碼之前,我想了解幾件事情: BITMAPINFO是BITMAPINFO還是BITMAPINFOHEADER?我非常確定BITMAPINFO中的bmiColors是顏色表,我必須提供任何bmiColors或什麼? CreateDIBSection的iUsage參數:「包含在由pbmi(邏輯調色板索引或文字RGB值)指向的BITMAPINFO結構的bmiColors數組成員中的數據的類型。」 「DIB_RGB_COLORS:BITMAPINFO結構包含一個字面RGB值的數組。」 什麼數組字面RGB值? – 2010-06-09 04:52:48
我猜我應該忽略bmiColors的東西,只是通過BITMAPINFOHEADER而不是BITMAPINFO,因爲這種情況是一個32位的位圖,並沒有顏色表。 但我不知道,如果我愚蠢或MSDN是非常混亂,或者兩者兼而有之。你認爲你可以點亮我嗎? – 2010-06-09 04:53:25
在你的代碼中你忽略了bmiColors,所以我認爲我的推理是正確的。 – 2010-06-09 04:55:16