0

作成したビットマップ ファイルからパレットを読み込みたい。ファイルは幅 256 ピクセル、高さ 1 ピクセルです。

私が使う

BitmapImage image = new BitmapImage();
image.BeginInit();           
image.UriSource = new Uri("image.bmp", UriKind.RelativeOrAbsolute);
image.EndInit();

myPalette = new BitmapPalette(image, 256);

奇妙なことに、 のCountプロパティmyPalette.Colorsは 244 しかありません!

私のコードに何か問題がありますか?

4

1 に答える 1

1

コードに問題はありません。BitmapPalette は、指定された色の数まで返します。ここから: http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmappalette.aspx

指定された BitmapSource に基づいて、BitmapPalette クラスの新しいインスタンスを初期化します。新しい BitmapPalette は、指定された最大色数に制限されています。

同じサイズで単色のテスト ビットマップを作成し、myPalette.Colors.Count1 を返しました。

ただし、実際にはBitmapfromを使用したい場合がありSystem.Drawing、はるかに単純であり、これはすべて同じ場合でも完全なパレット リスト (256) を返します。

var test = new Bitmap("image.bmp");    
Console.WriteLine(test.Palette.Entries.Length);

上記と同じテストで、256 エントリが返されます

于 2012-06-17T10:03:49.770 に答える