Создать собственную палитру для WritableBitmap из 256 цветов
Теперь я искал почти час и просто не мог найти ответ. В настоящее время я работаю над программой, которая отображает пользовательское изображение (используя WritableBitmap) либо в оттенках серого, либо в цветовой гамме с 256 предопределенными цветами.
Входными данными для изображения будет массив байтов (который отлично работает, если я установил для свойства PixelFormat значение PixelFormats.Gray8), но, поскольку мне тоже нужна настраиваемая цветовая шкала, я хотел бы создать настраиваемые шкалы (один для серого и один для одного или больше для цветов). Я думаю, что мне нужно использовать свойство PixelFormat.Indexed8, но я просто не могу понять, как его использовать и как создать собственную цветовую палитру, а Интернет совсем не помог в ее создании.
1 ответ
Вы можете создать кастом 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(...);