Russian Qt Forum

Qt => Вопросы новичков => Тема начата: once_again_abc от Сентябрь 01, 2011, 07:29



Название: Можно ли перевернуть ось у на QPixmap?
Отправлено: once_again_abc от Сентябрь 01, 2011, 07:29
рисую сразу на пиксмапе. хочется для удобства перевернуть ось Y. как это сделать и не скажется ли это на производительности?


Название: Re: Можно ли перевернуть ось у на QPixmap?
Отправлено: ecspertiza от Сентябрь 01, 2011, 08:46
для поворота используй ф-цию transformed класса QPixmap ну а так же посмотри в сторону классов QTransform или QMatrix. На производительности конечно скажется :) Чем больше картинка тем больше и скажется. Исходя из твоего соседнего вопроса про потоки сразу могу сказать что QPixmap в потоке скорее всего не получиться преобразовывать, по крайней мере я недавно пробовал и на выходе получил пустой QPixmap и кучу варнингов. Если будешь работать в потоке используй QImage.


Название: Re: Можно ли перевернуть ось у на QPixmap?
Отправлено: Drafter от Сентябрь 01, 2011, 08:56
Вот, к примеру, код, который вращает пиксмап вокруг оси Y.

Код
C++ (Qt)
rotatedPix = basePix.transformed(QTransform().rotate(angle, Qt::YAxis),
                                Qt::FastTransformation);
 



Название: Re: Можно ли перевернуть ось у на QPixmap?
Отправлено: once_again_abc от Сентябрь 02, 2011, 03:58
для поворота используй ф-цию transformed класса QPixmap ну а так же посмотри в сторону классов QTransform или QMatrix. На производительности конечно скажется :) Чем больше картинка тем больше и скажется. Исходя из твоего соседнего вопроса про потоки сразу могу сказать что QPixmap в потоке скорее всего не получиться преобразовывать, по крайней мере я недавно пробовал и на выходе получил пустой QPixmap и кучу варнингов. Если будешь работать в потоке используй QImage.

у меня все работает и никаких варнингов, наверное я что-то делаю не так. ;D более того, мне понадобилось создать две одинаковых пиксмапа - на одном пиксмапе поток рисует, а другой пиксмап (с уже отрисованным контентом) передан на отрисовку и доп. обработку другому потоку через фиксированный указатель. все прекрасно работает.
фактически двойная буферизация руками, у меня сейчас другая проблема - передача уведомлений через сигнал-слот жрет очень много =) очень часто один поток уведомляет другой, что работа сделана (пиксмап готов).


Название: Re: Можно ли перевернуть ось у на QPixmap?
Отправлено: once_again_abc от Сентябрь 02, 2011, 04:00
Вот, к примеру, код, который вращает пиксмап вокруг оси Y.

Код
C++ (Qt)
rotatedPix = basePix.transformed(QTransform().rotate(angle, Qt::YAxis),
                                Qt::FastTransformation);
 



Спасибо! сейчас попробую...


Название: Re: Можно ли перевернуть ось у на QPixmap?
Отправлено: shirushizo от Сентябрь 02, 2011, 13:00
Код:
new_y=img.height()-old_y;
Улавливаешь?