Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Yegor от Ноябрь 30, 2011, 20:44



Название: Зеркальное отражение для QGraphicsItem
Отправлено: Yegor от Ноябрь 30, 2011, 20:44
Здравствуйте!

Можно ли сделать для QGraphicsItem такое преобразование как зеркальное отражение? Отражение относительно горизонтали, вертикали?


Название: Re: Зеркальное отражение для QGraphicsItem
Отправлено: _OLEGator_ от Декабрь 01, 2011, 11:02
По всей видимости, надо реализовать свой QGraphicsEffect с требуемым функционалом.


Название: Re: Зеркальное отражение для QGraphicsItem
Отправлено: artiom_kh от Март 02, 2012, 12:38
можно проще:

Код
C++ (Qt)
static QTransform makeTransform( int f, const QSizeF& objSize );//f - flip flags (fsHorizontal,fsVertical), objSize - the size of QGraphicsItem
 
QTransform makeTransform( int f, const QSizeF& objSize )
 {
   FUNC_PREPROCESS;
   QTransform res;
   qreal fDx = 1., fDy = 1.;
   QPointF ptOffset;
   if( f & fsHorizontal )//flip by horz
   {
     fDx = -1;
     ptOffset.setX( -objSize.width() );
   }
   if( f & fsVertical )//flip by vert
   {
     fDy = -1;
     ptOffset.setY( -objSize.height() );
   }
   res.scale( fDx, fDy );
   res.translate( ptOffset.x(), ptOffset.y() );
   return res;
 }
 
//usage
extern QGraphicsItem* pItm;
QTransform t = makeTransform( fsHorizontal | fsVertical, pItm->boundingRect().size() );
pItm->setTransform( t );