从256色为WriteableBitmap创建自定义调色板

时间:2012-08-31 10:25:07

标签: c# wpf bitmap palette

我现在已经找了差不多一个小时,但是找不到答案。我目前正在开发一个显示自定义图像(使用WritableBitmap)的程序,无论是灰度还是256色预定颜色。

图像的输入将是一个字节数组(如果我将PixelFormat属性设置为PixelFormats.Gray8,它可以正常工作),但由于我也需要自定义颜色比例,我想创建自定义比例(一个用于灰色和一个或多个颜色)。我认为我需要使用的是PixelFormat.Indexed8属性,但我根本无法找到如何使用它以及如何创建自定义调色板,互联网对如何创建它没有任何帮助。

1 个答案:

答案 0 :(得分:3)

您可以创建自定义BitmapPalette并将其应用于新的WriteableBitmap

var myPalette = new BitmapPalette(new List<Color> 
{ 
    Colors.Red,
    Colors.Blue,
    Colors.Green,
    // ...
});

var writeableBitmap = new WriteableBitmap(
    width, 
    height, 
    96, 
    96, 
    PixelFormats.Indexed8, // Paletted bitmap with 256 colours
    myPalette);

writeableBitmap.WritePixels(...);