Нарисуйте массив битов (RGB) в окнах - PullRequest
3 голосов
/ 23 апреля 2009

У меня есть массив необработанных данных RGB. Я хотел бы знать, как я могу нарисовать эти пиксели на экране в ОС Windows?

Теперь я использую функцию API DrawDIBits, но я должен включить данные моего изображения.

Ответы [ 2 ]

3 голосов
/ 23 апреля 2009

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

Что касается перевернутого характера функций Windows Blit:

Есть обходной путь. Если вы передаете в функцию структуру BITMAPINFOHEADER или BITMAPINFO, просто отрицаете значение в элементе bitmap-height. Это скажет GDI сделать блиц, как если бы высота была положительной, но интерпретировать данные как данные, хранящиеся в порядке сверху вниз.

Вы также можете получить хорошее улучшение скорости с помощью этого "хака".

Если вы хотите изменить порядок байтов пикселей (например, превратить ARGB в BGRA или около того), вы можете использовать структуру BITMAPV4HEADER и сообщить GDI, как организованы ваши данные пикселей. Это функциональность, которая используется редко, но работает с WIN98. Я бы сказал, что теперь это безопасно, чтобы использовать его ..

0 голосов
/ 23 апреля 2009

Если вы имеете в виду рисование без обращения (R, G, B) в (B, G, R), я не знаю автоматического способа сделать это.

Если вы имеете в виду рисование без добавления каждой строки, кратной 4 пикселям, вы можете сделать это, рисуя каждую строку по одной за раз. Это будет медленно, хотя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...