Сгенерированное изображение в формате BMP, Но отображаемое перевернутым
Вопрос
Я сгенерировал 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.
Есть два возможных исправления:
- Сгенерируйте свой буфер в перевернутом виде.
- Многие API Windows, которые принимают BITMAPINFO, обрабатывают отрицательное значение biHeight как значение DIB сверху вниз.