Название: [РЕШЕНО] Преобразовать QImage в трапецию Отправлено: Vladimir от Апрель 27, 2015, 15:03 Доброго дня! Подскажите возможно ли преобразовать QImage в трапецию: сжать верх и растянуть низ? Пробую через QTransform и QMatrix, но ничего не выходит.. прикрепляю минимальный проект.
Название: Re: Преобразовать QImage в трапецию Отправлено: Igors от Апрель 27, 2015, 15:15 Доброго дня! Подскажите возможно ли преобразовать QImage в трапецию: сжать верх и растянуть низ? Пробую через QTransform и QMatrix, но ничего не выходит.. прикрепляю минимальный проект. Матричное преобразование отображает равные отрезки в равные - но для трапеции (деформации) это не так. Поэтому QTransform здесь не поможет. Надо писать самому - ну или нагугливать "готовое решение" Название: Re: Преобразовать QImage в трапецию Отправлено: Vladimir от Апрель 27, 2015, 15:31 Доброго дня! Подскажите возможно ли преобразовать QImage в трапецию: сжать верх и растянуть низ? Пробую через QTransform и QMatrix, но ничего не выходит.. прикрепляю минимальный проект. Матричное преобразование отображает равные отрезки в равные - но для трапеции (деформации) это не так. Поэтому QTransform здесь не поможет. Надо писать самому - ну или нагугливать "готовое решение" Понятно! Может советом поможете или ссылкой куда копать? Название: Re: Преобразовать QImage в трапецию Отправлено: Igors от Апрель 27, 2015, 15:50 Понятно! Может советом поможете или ссылкой куда копать? Погуглите, если ничего хорошего - завтра найду время, попробую сам написатьНазвание: Re: Преобразовать QImage в трапецию Отправлено: Vladimir от Апрель 27, 2015, 16:04 Понятно! Может советом поможете или ссылкой куда копать? Погуглите, если ничего хорошего - завтра найду время, попробую сам написатьГуглю пока ничего определенного.. Спасибо! Название: Re: Преобразовать QImage в трапецию Отправлено: AlFoX от Апрель 28, 2015, 04:09 Я бы сделал через QGraphicsScene. там есть перспектива
Вот похожий пример, только в вашем случае вращать вокруг оси X http://www.codeprogress.com/cpp/libraries/qt/showQtExample.php?index=510&key=MovableQGraphicsPixmapItem Название: Re: Преобразовать QImage в трапецию Отправлено: Vladimir от Апрель 28, 2015, 10:18 Я бы сделал через QGraphicsScene. там есть перспектива Вот похожий пример, только в вашем случае вращать вокруг оси X http://www.codeprogress.com/cpp/libraries/qt/showQtExample.php?index=510&key=MovableQGraphicsPixmapItem Проект уже сделан и все рисование там осуществляется на QWidget в разных слоях картинках, поэтому не очень хочется ради видоизменения одной прикручивать сцену и переделывать все остальное рисование, коего немало.. но эффект интересный! Только вот когда вращаю вокруг X меняется только одна сторона трапеции (правая), а левая остается под прямым углом.. какая-то односторонняя перспектива получается. А необходимо равномерно видоизменить прямоугольник (квадрат) в равностороннюю трапецию! Название: Re: Преобразовать QImage в трапецию Отправлено: Vladimir от Апрель 28, 2015, 10:51 Хотя можно только поменять картинку при помощи сцены (http://stackoverflow.com/questions/23698114/how-can-i-apply-a-graphic-effect-to-the-image-in-qlistview), но опять же какая-то не совсем правильная перспектива получается. При чем необходимо не только сузить верх картинки равномерно, но и также равномерное растянуть низ трапеции. Можно ли этого добиться перспективой сцены?
Название: Re: Преобразовать QImage в трапецию Отправлено: AlFoX от Апрель 28, 2015, 11:19 Это должно помочь:
QTransform & QTransform::translate(qreal dx, qreal dy) выставьте центр трансформации на центр картинки Название: Re: Преобразовать QImage в трапецию Отправлено: Vladimir от Апрель 28, 2015, 11:28 Это должно помочь: QTransform & QTransform::translate(qreal dx, qreal dy) выставьте центр трансформации на центр картинки translate() и выставляет центр трансофрмации? Это функция только сместила у меня картинку на dx и dy вправо вниз Название: Re: Преобразовать QImage в трапецию Отправлено: AlFoX от Апрель 28, 2015, 11:31 В коде из примера выше:
Код: QTransform transform; сначала translate, потом rotate Название: Re: Преобразовать QImage в трапецию Отправлено: Vladimir от Апрель 28, 2015, 11:46 В коде из примера выше: Код: QTransform transform; сначала translate, потом rotate так и делаю, но смещается левый верхний угол картинки, перспектива не меняется. прикреплю проект Название: Re: Преобразовать QImage в трапецию Отправлено: AlFoX от Апрель 28, 2015, 12:32 рабочий пример
Код: #include "widget.h" Название: Re: Преобразовать QImage в трапецию Отправлено: Vladimir от Апрель 28, 2015, 13:01 рабочий пример Код: #include "widget.h" Спасибо! Буду пробовать применять данную трапецию к моей задаче, там правда еще нужно расширить низ,но это видимо можно будет сделать sclale-м! Спасибо еще раз! |