Почему моя растровая палитра пуста?
У меня есть следующий код:
List<Color> colors = new List<Color>();
colors.Add(Colors.Red);
colors.Add(Colors.Yellow);
BitmapPalette palette = new BitmapPalette(colors);
var bitmap = new WriteableBitmap( (int)width,
(int)height,
96,
96,
PixelFormats.Bgr32,
palette);
Проблема в том, что bitmap.Palette
свойство равно нулю Зачем? Как я могу исправить эту проблему?
Редактировать:
Я устанавливаю пиксель Fortam как PixelFormats.Indexed8
, но я не могу изменить значение пикселя, чтобы установить определенный индекс из моей палитры. Например:
int column = ...;
int row = ...;
// Reserve the back buffer for updates.
bitmap.Lock();
unsafe
{
// Get a pointer to the back buffer.
int pBackBuffer = (int)bitmap.BackBuffer;
// Find the address of the pixel to draw.
pBackBuffer += row * bitmap.BackBufferStride;
pBackBuffer += column * 4;
// Compute the pixel's color.
int color_data = ???;
// Assign the color data to the pixel.
*((int*)pBackBuffer) = color_data;
}
// Specify the area of the bitmap that changed.
bitmap.AddDirtyRect(new Int32Rect(column, row, 1, 1));
// Release the back buffer and make it available for display.
bitmap.Unlock();
Какое значение я должен установить color_data
для того, чтобы установить цвет пикселя на второй цвет палитры (то есть желтый в данном случае)?