Как повернуть растровое изображение в Windows GDI?

Как бы я начал вращать растровое изображение в Windows GDI,C++?

3 ответа

Решение

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

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

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

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

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

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