Как повернуть растровое изображение в Windows GDI? - PullRequest
10 голосов
/ 16 февраля 2010

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

Ответы [ 3 ]

8 голосов
/ 16 февраля 2010

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

5 голосов
/ 16 февраля 2010

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

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

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

3 голосов
/ 16 февраля 2010

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

...