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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsItem и аффинные преобразования  (Прочитано 2642 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« : Февраль 15, 2013, 09:40 »

Всем привет, давно не виделись Улыбающийся Начну с того ,что я не уверен ,что мне помогут аффинные преобразования, отчасти поэтому тут и пишу. Опишу задачу, есть некий QGraphicsView на нем естественно есть QGraphicsItem. В этом QGraphicsItem может быть нарисовано все ,что угодно: начиная от обычных прямоугольников и окружностей, заканчивая просто набором линий или набором точек, может даже изображение. Все ,что есть в QGraphicsItem рисуется в QPainterPath ,а потом уже рисуется на самом итеме. Но у каждого итема есть ключевые точки, за которые юзверь может дергать\таскать и так далее, в зависимости от ключевых точек которые дергает юзверь итем должен перерисовывать содержимое(для примера, вот как выглядит итем http://joxi.ru/VtQdUdg5CbAcaWPuyWw)

красный цвет - ключевые точки
черный цвет - это просто сам итем, его область
зеленый - то что может быть нарисовано

стало быть, если юзверь тянет правую-центральную точку в лево, то итем должен становиться меньше по ширине, а все что нарисовано естественно должно преобразоваться в соответствии с измененными размерами. Раньше для этих изменений я использовал QMatrix , вызывал у него scale() потом этот QMatrix умножал на QPainterPath и получал результат. В принципе это работало, но пользователь же может крайнюю правую точку переместить за левую границу и тогда по идее все содержимое должно будет отразиться по горизонтали. И стало быть scale для это го уже не подходит. Стало быть возникает вопрос, подойдут ли для этого аффинные преобразования? Может можно как то по другому решить данную задачу ?
Записан
ssoft
Гость
« Ответ #1 : Февраль 15, 2013, 09:45 »

Почему scale не подходит? Этот параметр может быть и отрицательным.
Вообще, QMatrix и определяет аффинные преобразования с объектом, и изменение масштаба - это их частный случай.
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


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


Просмотр профиля
« Ответ #2 : Февраль 15, 2013, 10:06 »

да, действительно работает, что то я это упустил Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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