Как я пошел бы о вращении Битового массива в Windows GDI, C++?
Вы можете сделать это с помощью GDI+ (#include
). В классе Graphics есть метод RotateTransform. Он позволяет выполнять произвольные вращения. Используйте Image::RotateFlip(), если вам нужно поворачивать только на 90 градусов, это гораздо эффективнее.
Похоже, вам нужно использовать PlgBlt . Возьмите 4 угла вашего прямоугольника как 2D-точки, поверните их, затем вызовите PlgBlt.
Из Вращение растрового изображения MSDN :
Чтобы скопировать растровое изображение в параллелограмм; используйте функцию PlgBlt , которая выполняет передачу битового блока из прямоугольника в исходном контексте устройства в параллелограмм в контексте целевого устройства. Чтобы повернуть растровое изображение, приложение должно предоставить координаты в мировых единицах, которые будут использоваться для углов параллелограмма.
Еще одна возможность (помимо уже предложенных) - использовать SetWorldTransform()
. Это отличается тем, что является модальным и применяется к DC в целом, а не только к одной операции. Если вы хотите повернуть один битмап с вращением, а другие вещи без вращения, это, вероятно, не лучший выбор. Если вы хотите нарисовать несколько повернутых объектов, или (особенно) если вы хотите повернуть все, что вы рисуете (по крайней мере, в одном DC), он может работать довольно хорошо.