2016-01-18 4 views
1

Я создаю пользовательскую палитру на C#. Мое растровое изображение выглядит следующим образом.Пользовательская цветовая палитра с BitmapPalette

List<System.Windows.Media.Color> colors = new List<System.Windows.Media.Color>(); 

//Add List entries here 

BitmapPalette bitmapPalette = new BitmapPalette(colors); 
wb = new WriteableBitmap(Width, Height, dpiX, dpiY, PixelFormats.Indexed8, bitmapPalette); 

Мне нужно создать карту от 0-255. Как это сделать проще всего?

colors.Add(System.Windows.Media.Colors.Red); 
colors.Add(System.Windows.Media.Colors.Blue); 
colors.Add(System.Windows.Media.Colors.Green); 

Один из способов заполнения такой, как показано, но заполнение всех 255 записей таким образом не имеет смысла. Как заполнить значения пикселей напрямую, а не System.Windows.Media.Colors.[Color]?

+0

это то, что вы хотите ?? https://msdn.microsoft.com/en-us/library/system.windows.media.color.fromargb(v=vs.110).aspx – PaulF

+0

Используйте [Color.FromRgb] (https://msdn.microsoft .com/en-us/library/system.windows.media.color.fromrgb (v = vs.110) .aspx) или [Color.FromArgb] (https://msdn.microsoft.com/en-us/library /system.windows.media.color.fromargb(v=vs.110).aspx). – Clemens

ответ

1

Color класс имеет метод FromArgb или FromRgb вы можете использовать, f.e .:

colors.Add(System.Windows.Media.Color.FromRgb(0, 0, 0)); 

Для создания черно-белую карту:

for (var i = 0; i < 256; i++) 
    colors.Add(System.Windows.Media.Color.FromRgb(i, i, i)); 
+0

Спасибо .. Это помогает :) – Joga

Смежные вопросы