2011-04-11 31 views
19

我一直在編寫PCX解碼器,到目前爲止,PCX圖像本身解析得很好,但我無法弄清楚如何設置位圖的調色板。無法在位圖中設置調色板

我已創建的位圖如下所示:

Bitmap bmp = new Bitmap(width, 
         height, 
         stride2, 
         System.Drawing.Imaging.PixelFormat.Format8bppIndexed, 
         pixels); 

但我似乎不能使用下面的方法來設置調色板:

for (int i = 0; i < 256; i += 3) 
{ 
    Color b = new Color(); 
    b = Color.FromArgb(palette[i], palette[i + 1], palette[i + 2]); 
    bmp.Palette.Entries.SetValue(b, i); 
} 

在本例中,我已通過每個讀字節在pcx文件的調色板中,並存儲在調色板[]中。從那裏,我用它來設置位圖的調色板中的條目。我如何設置顏色?

+0

不用擔心,現在修好了。 – user646265 2011-04-20 09:45:05

回答

29

這讓我感到困惑。它似乎bitmap.Palette返回位圖的調色板的克隆。一旦你修改了你的副本,你需要使用bitmap.Palette = palette來重置位圖的調色板。

ColorPalette palette = bitmap.Palette; 
Color entries = palette.Entries; 
.... 
entries[i] = new Color(...); 
.... 
bitmap.Palette = palette; // The crucial statement 

http://www.charlespetzold.com/pwcs/PaletteChange.html

+0

是的,我認爲你是對的,它會返回一個克隆,這是我知道的唯一解釋。 – Pedro77 2013-12-13 14:33:07