Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: ecspertiza от Февраль 15, 2013, 09:40



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

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

стало быть, если юзверь тянет правую-центральную точку в лево, то итем должен становиться меньше по ширине, а все что нарисовано естественно должно преобразоваться в соответствии с измененными размерами. Раньше для этих изменений я использовал QMatrix , вызывал у него scale() потом этот QMatrix умножал на QPainterPath и получал результат. В принципе это работало, но пользователь же может крайнюю правую точку переместить за левую границу и тогда по идее все содержимое должно будет отразиться по горизонтали. И стало быть scale для это го уже не подходит. Стало быть возникает вопрос, подойдут ли для этого аффинные преобразования? Может можно как то по другому решить данную задачу ?


Название: Re: QGraphicsItem и аффинные преобразования
Отправлено: ssoft от Февраль 15, 2013, 09:45
Почему scale не подходит? Этот параметр может быть и отрицательным.
Вообще, QMatrix и определяет аффинные преобразования с объектом, и изменение масштаба - это их частный случай.


Название: Re: QGraphicsItem и аффинные преобразования
Отправлено: ecspertiza от Февраль 15, 2013, 10:06
да, действительно работает, что то я это упустил :)