Почему моя растровая палитра пуста?

У меня есть следующий код:

  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 для того, чтобы установить цвет пикселя на второй цвет палитры (то есть желтый в данном случае)?

0 ответов

Другие вопросы по тегам