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.Count返回 1。

但是请注意,您实际上可能想要使用Bitmapfrom System.Drawing,简单得多,这将返回完整的调色板列表 (256),即使它们都是相同的:

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

使用与上述相同的测试,返回 256 个条目

于 2012-06-17T10:03:49.770 回答