2011-04-11 6 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

答えて

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

関連する問題