Russian Qt Forum
Ноябрь 23, 2024, 14:25 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Можно ли перевернуть ось у на QPixmap?  (Прочитано 3971 раз)
once_again_abc
Гость
« : Сентябрь 01, 2011, 07:29 »

рисую сразу на пиксмапе. хочется для удобства перевернуть ось Y. как это сделать и не скажется ли это на производительности?
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #1 : Сентябрь 01, 2011, 08:46 »

для поворота используй ф-цию transformed класса QPixmap ну а так же посмотри в сторону классов QTransform или QMatrix. На производительности конечно скажется Улыбающийся Чем больше картинка тем больше и скажется. Исходя из твоего соседнего вопроса про потоки сразу могу сказать что QPixmap в потоке скорее всего не получиться преобразовывать, по крайней мере я недавно пробовал и на выходе получил пустой QPixmap и кучу варнингов. Если будешь работать в потоке используй QImage.
« Последнее редактирование: Сентябрь 01, 2011, 08:59 от ecspertiza » Записан
Drafter
Гость
« Ответ #2 : Сентябрь 01, 2011, 08:56 »

Вот, к примеру, код, который вращает пиксмап вокруг оси Y.

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

Записан
once_again_abc
Гость
« Ответ #3 : Сентябрь 02, 2011, 03:58 »

для поворота используй ф-цию transformed класса QPixmap ну а так же посмотри в сторону классов QTransform или QMatrix. На производительности конечно скажется Улыбающийся Чем больше картинка тем больше и скажется. Исходя из твоего соседнего вопроса про потоки сразу могу сказать что QPixmap в потоке скорее всего не получиться преобразовывать, по крайней мере я недавно пробовал и на выходе получил пустой QPixmap и кучу варнингов. Если будешь работать в потоке используй QImage.

у меня все работает и никаких варнингов, наверное я что-то делаю не так. Смеющийся более того, мне понадобилось создать две одинаковых пиксмапа - на одном пиксмапе поток рисует, а другой пиксмап (с уже отрисованным контентом) передан на отрисовку и доп. обработку другому потоку через фиксированный указатель. все прекрасно работает.
фактически двойная буферизация руками, у меня сейчас другая проблема - передача уведомлений через сигнал-слот жрет очень много =) очень часто один поток уведомляет другой, что работа сделана (пиксмап готов).
Записан
once_again_abc
Гость
« Ответ #4 : Сентябрь 02, 2011, 04:00 »

Вот, к примеру, код, который вращает пиксмап вокруг оси Y.

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



Спасибо! сейчас попробую...
Записан
shirushizo
Гость
« Ответ #5 : Сентябрь 02, 2011, 13:00 »

Код:
new_y=img.height()-old_y;
Улавливаешь?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.21 секунд. Запросов: 23.