Как повернуть Битовый массив в окнах GDI?

Как я пошел бы о вращении Битового массива в Windows GDI, C++?

11
задан MxNx 5 December 2016 в 09:17
поделиться

3 ответа

Вы можете сделать это с помощью GDI+ (#include ). В классе Graphics есть метод RotateTransform. Он позволяет выполнять произвольные вращения. Используйте Image::RotateFlip(), если вам нужно поворачивать только на 90 градусов, это гораздо эффективнее.

8
ответ дан 3 December 2019 в 07:37
поделиться

Похоже, вам нужно использовать PlgBlt . Возьмите 4 угла вашего прямоугольника как 2D-точки, поверните их, затем вызовите PlgBlt.

Из Вращение растрового изображения MSDN :

Чтобы скопировать растровое изображение в параллелограмм; используйте функцию PlgBlt , которая выполняет передачу битового блока из прямоугольника в исходном контексте устройства в параллелограмм в контексте целевого устройства. Чтобы повернуть растровое изображение, приложение должно предоставить координаты в мировых единицах, которые будут использоваться для углов параллелограмма.

5
ответ дан 3 December 2019 в 07:37
поделиться

Еще одна возможность (помимо уже предложенных) - использовать SetWorldTransform(). Это отличается тем, что является модальным и применяется к DC в целом, а не только к одной операции. Если вы хотите повернуть один битмап с вращением, а другие вещи без вращения, это, вероятно, не лучший выбор. Если вы хотите нарисовать несколько повернутых объектов, или (особенно) если вы хотите повернуть все, что вы рисуете (по крайней мере, в одном DC), он может работать довольно хорошо.

3
ответ дан 3 December 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: