27

私は 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 ファイルのパレットの各バイトを読み取り、それらを palette[] に格納しました。そこから、これを使用してビットマップのパレットにエントリを設定しました。色を設定するにはどうすればよいですか?

4

2 に答える 2

37

これは私も混乱しました。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を参照してください。

于 2011-05-16T02:25:24.807 に答える