Отразить растровое изображение в C

Есть ли способ перевернуть растровое изображение с помощью таких функций, как BitBlt или StretchBlt. Меня очень смущают координаторы. В настоящее время я пробовал некоторые варианты этого:

BitBlt(hdc,0,bmp.bmHeight,bmp.bmWidth,0,hdc,0,0,SRCCOPY);

Это вообще возможно с этими функциями?

learn.microsoft.com/en-us/windows/win32/gdi/…

Andrey Sv 20.12.2020 18:02
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
363
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Используйте StretchBlt. Из мануала

StretchBlt создает зеркальное изображение растрового изображения, если знаки параметры nWidthSrc и nWidthDest или если параметры nHeightSrc и Параметры nHeightDest различаются. Если nWidthSrc и nWidthDest имеют разные знаки, функция создает зеркальное отображение растрового изображения по оси x. Если nHeightSrc и nHeightDest имеют разные знаки, функция создает зеркальное отображение растрового изображения по оси Y.

Ответ принят как подходящий

BitBlt не допускает никаких преобразований, кроме перевода. StretchBlt сделает это, хотя. Просто укажите отрицательную ширину или высоту конечной точки (в зависимости от того, какую ось вы хотите перевернуть) и отрегулируйте соответствующую исходную координату конечной точки, чтобы она относилась к другой стороне. Например, чтобы перевернуть изображение размером 200x100 по горизонтали, вы должны сделать

StretchBlt(
    dest, 
    200, 0, -200, 100,
    src,
    0, 0, 200, 100,
    SRCCOPY);

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