Рисование 4-битных проиндексированных изображений в GDI + - PullRequest
1 голос
/ 15 марта 2012

Я пытаюсь нарисовать некоторые базовые графические примитивы (линии, прямоугольники и т. Д.), Используя GDI + apis для 4-битных индексированных битовых карт. Я использую функции Bitmap () для создания растровых изображений и их загрузки.

Bitmap myBitmap(100/*width*/,100/*height*/,PixelFormat4bppIndexed/*Pixel format*/);
Graphics graphics(&myBitmap);
SolidBrush brush(Color(255,128,0,0));
graphics.FillRectangle(&brush,0,0,100,100);

Но это не работает (прямоугольник не создан). В чем может быть проблема? Я попытался вручную использовать LockBits и модифицировать биты вручную, он работает хорошо, тогда почему он не работает с операциями Graphics gdi +.

1 Ответ

0 голосов
/ 19 марта 2012

Наконец мне удалось решить мою проблему. Чтобы выполнить операции gdi + с использованием объекта Graphics на 4-битном индексированном растровом изображении, нам нужно выполнить следующие шаги.

  1. Создайте 4bpp HBITMAP напрямую или загрузите изображение из файла, используя LoadImage.
  2. При загрузке из файла 4bpp, затем загрузить палитру из файла в объекте HPALETTE.
  3. Создание настольного компьютера, совместимого с DC.
  4. Выберите и реализуйте свою палитру во вновь созданном ДК.
  5. выберите HBITMAP в вашем DC.
  6. Создание графического объекта с использованием вашего постоянного тока.
  7. Выполнять операции GDI + на индексированных 4bpp.

Хотя я не пробовал с 8bpp, но я думаю, что аналогичные операции можно выполнять и на 8bpp.

Надеюсь, это поможет и другим.

...