Название: Поворот QGraphicsItemGroup. Отправлено: Lunex.08 от Июнь 06, 2011, 09:19 День добрый.
Проблема в следующем: при каждом вызове одного слота, мне нужно создавать группу QGraphicsItemGroup из разных итемов и сделать поворот(на 90 град.) относительно начала системы координат группы. Причем у итемов может быть разное положение в сцене, но они касаются друг друга. Пробовал разные варианты - все равно поворот идет относительно сцены, точки 0,0. Набросочек: Код: void View::rotate() Название: Re: Поворот QGraphicsItemGroup. Отправлено: twp от Июнь 06, 2011, 13:03 может поможет void QGraphicsItem::setTransformOriginPoint ( const QPointF & origin )
Название: Re: Поворот QGraphicsItemGroup. Отправлено: Igors от Июнь 06, 2011, 14:28 Не проверял, но по смыслу должно быть
Код
Название: Re: Поворот QGraphicsItemGroup. Отправлено: Lunex.08 от Июнь 08, 2011, 10:53 Хм. Идея меня в обоих случаях устраивает. Но реализацию сделать не могу.
К примеру: Код: void View::Rotate() И я вроде понимаю где ошибка: у итемов в группе значения x и y имеют прежние большие величины, т.е. координаты сцены. Если я правильно понял, как это исправить? Название: Re: Поворот QGraphicsItemGroup. Отправлено: Zartul от Июнь 08, 2011, 16:59 попробуйте использовать ф-ю трансформации для поворота относительно заданой точки
в ассистенте вроде так пишут: Цитировать // Поворачивает элемент на 45 градусов вокруг (x, y). item->setTransform( QTransform().translate( x, y ).rotate( 45 ).translate( -x, -y ) ); Код
или посмотрите относительно каких координат поворачиваете, может точку надо перемапить с координат сцены в координаты итема... Название: Re: Поворот QGraphicsItemGroup. Отправлено: Lunex.08 от Июнь 09, 2011, 17:31 попробуйте использовать ф-ю трансформации для поворота относительно заданой точки Товарищ, от всей души благодарю! Верите\нет, я за час до вашего сообщения этот пример просмотрел, скопировал его. И не работал. А не фурычило потому, что не до конца строку с кодом выделил. И часть обрезал. Поэтому и поворот шел лишь с одной стороны, все время смещая фигуру по оси y. А щас все тип-топ. Еще раз благодарю! ;)в ассистенте вроде так пишут: Цитировать // Поворачивает элемент на 45 градусов вокруг (x, y). item->setTransform( QTransform().translate( x, y ).rotate( 45 ).translate( -x, -y ) ); Код
или посмотрите относительно каких координат поворачиваете, может точку надо перемапить с координат сцены в координаты итема... Не проверял, но по смыслу должно быть Идея та же самая, только поворот идет против часовой стрелки. И вам спасибо за помощь!Код
Название: Re: Поворот QGraphicsItemGroup. Отправлено: Igors от Июнь 09, 2011, 18:22 Идея та же самая, только поворот идет против часовой стрелки. Так это нормально/общепринято, положительный угол поворота поворачивает против часовой стрелки ("правая" система координат). Так в <math.h> и везде |