1

ビットマップをグラフィカルに編集するツールを作成しています。ユーザーが選択したいくつかのオプションに基づいて描画し、ピクセルの色を編集できるようにするために、24bppRgb に変換する必要がある既存のカラー パレットを含む 8bppIndexed ビットマップがいくつかあります。ビットマップ グラフィックは、元の 8bpp .bmp ファイルです。

//Get Bitmap from file
Bitmap graphic = new Bitmap(source);

//Get palette and pixel format
ColorPalette pal = graphic.Palette;
PixelFormat pix = graphic.PixelFormat; //Format8bppIndexed

//Create datagraphic in 24bppRgb to allow for editing
PixelFormat datapix = PixelFormat.Format24bppRgb;
Bitmap datagraphic = graphic.Clone(new Rectangle(0, 0, graphic.Width, graphic.Height), datapix);

ビットマップ データグラフィックを描画および編集した後、ビットマップ グラフィックと同じカラー パレットで 8bppIndexed に変換しようとしています。私はこのようにすることができます:

//Convert back to graphic pixel format
datagraphic = datagraphic.Clone(new Rectangle(0, 0, datagraphic.Width, datagraphic.Height), pix); //Format8bppIndexed

//Apply color palette
datagraphic.Palette = pal;

ただし、グラフィックと同じピクセル形式でデータグラフィックを複製すると、まったく新しいカラー パレットが作成されます。ColorPalette pal を適用すると、データグラフィックの色がすべて正しくなくなります。2 つのパレット間のインデックス番号のみが一致します。色を保持する別の方法はありますか?

はい、ビットマップはカスタム パレットで 8bppIndexed にする必要があります。最終結果のすべてのデータ グラフィックスのカラー インデックスを正しいパレットで変更するために、Photoshop を使用する必要がないようにしています。

私はまだC#にかなり慣れていないと言わざるを得ません。私がやろうとしていることを明確にしていただければ幸いです。ここで何か助けていただければ幸いです。前もって感謝します。

4

1 に答える 1