2011-01-19 6 views
1

Это последнее стремление к работе с драйвером принтера. Я хочу отобразить совместимое растровое изображение, а затем повернуть его до или во время копирования на принтер DC.Быстрый/простой способ повернуть растровое изображение Windows на 90 градусов?

Я знаком с this previous question, который рекомендовал GDI +, но мне любопытно узнать, есть ли ответ, использующий только GDI.

ответ

1

В любом из этих методов должен работать:

  1. PlgBlt, который «выполняет передачу битового блока битов данных цвета из указанного прямоугольника в контексте устройства-источника к указанному параллелограмма в пункте назначения контекст устройства "с координатами повернутого параллелограмма

  2. Комбинация SetWorldTransform, проходящая по матрице вращений и нормальная BitBlt.

Обратите внимание, что в источнике DC не должно быть никакого преобразования вращения, а только адресата.

Я боюсь, что сейчас я не могу дать вам пример кода, но некоторые поисковые запросы принесли некоторые примеры того, как использовать эти функции для поворота произвольного количества градусов, которые вы могли бы изменить на жесткий -код до 90 градусов:

  • Using PlgBlt (извините язык здесь ... это VB)
  • Using SetWorldTransform and BitBlt. Обратите внимание, что если ваш код изменяет преобразование в другом месте (например, любой потоковый потомок VCL TGraphicControl будет иметь это в своем методе Paint, и, вероятно, вероятно, что и MFC и другие обычные обертки WinAPI), вы должны использовать GetWorldTransform, чтобы сохранить текущее преобразование и примените свой код с помощью ModifyWorldTransform вместо того, чтобы устанавливать (переписывать) текущее преобразование.
  • Пока я искал эти примеры, я наткнулся на интересный, очень старый Microsoft Support question showing how to draw to a rotated or non-rectangular area. Я подозреваю, что для вращения этот код не так хорош, как одна из других функций.

Я не уверен, что любой из них считается быстрым и легким по сравнению с использованием GDI + :)

+0

Спасибо за ответ! Я закончил тем самым трудным путем, получив растровые данные, повернув его и создав новое растровое изображение. –

Смежные вопросы