我想从我创建的位图文件加载调色板。该文件宽256像素,高1像素。
我用
BitmapImage image = new BitmapImage();
image.BeginInit();
image.UriSource = new Uri("image.bmp", UriKind.RelativeOrAbsolute);
image.EndInit();
myPalette = new BitmapPalette(image, 256);
奇怪的是,Count
的{{1}}属性只有244个!
我的代码有问题吗?
答案 0 :(得分:1)
您的代码没有任何问题 - BitmapPalette返回最多指定的颜色数。从这里开始:http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmappalette.aspx
基于的初始化BitmapPalette类的新实例 指定了BitmapSource。新的BitmapPalette仅限于a 指定的最大颜色数。
我创建了一个具有相同尺寸和单一颜色的测试位图,myPalette.Colors.Count
返回了1。
但是请注意,您实际上可能希望使用Bitmap
中的System.Drawing
,这更简单,即使它们完全相同,也会返回完整的调色板列表(256):
var test = new Bitmap("image.bmp");
Console.WriteLine(test.Palette.Entries.Length);
使用与上面相同的测试,返回256个条目