Сгенерированное изображение в формате BMP, Но отображаемое перевернутым

StackOverflow https://stackoverflow.com/questions/4669041

  •  10-10-2019
  •  | 
  •  

Вопрос

Я сгенерировал bitmap.dll через winddk.

Добавлен вручную в качестве драйвера принтера, выбрав драйвер печати в файл.

Используя это, я создаю изображение своего документа, используя команду печати из файла.

Я могу создать изображение и просмотреть его, но проблема в том, что я получаю перевернутое (зеркальное) изображение.

cScans = pOemPDEV->bmInfoHeader.biHeight;
// Flip the biHeight member so that it denotes top-down bitmap 
pOemPDEV->bmInfoHeader.biHeight = cScans * -1;

Есть у кого-нибудь обходной путь для этого кода?Поскольку я получаю проблему, когда я комментирую (чтобы правильно сгенерировать заголовок) эти строки.

Это было полезно?

Решение

Растровые изображения, не зависящие от устройства, документируются как размещенные в памяти с нижней строкой в начале буфера.Это эксперимент с декартовыми координатами, проведенный разработчиками OS / 2, которые работали с Microsoft одновременно с разработкой Windows 3.

Есть два возможных исправления:

  1. Сгенерируйте свой буфер в перевернутом виде.
  2. Многие API Windows, которые принимают BITMAPINFO, обрабатывают отрицательное значение biHeight как значение DIB сверху вниз.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top