在处理组合图元
缩放后
旋转时发现个
问题,代码如下
QGraphicsItemGroup *test = scene->createItemGroup(scene->selectedItems());
test->setFlag(QGraphicsItem::ItemIsMovable, true);
test->setFlag(QGraphicsItem::ItemIsSelectable, true);
QRectF m_rect=test->boundingRect();
qreal wval=1.5;
qreal hval=1.0;
QPointF trspt;
QTransform trans,trans1;
//先旋转后缩放 trspt=m_rect.center();
trans1.translate(trspt.x(),trspt.y() );
trans1.rotate(90);
trans1.translate(-trspt.x(),-trspt.y() );
test->setTransform(trans1,true);
m_rect=test->boundingRect();
trspt=m_rect.topLeft();
trans.translate(trspt.x(),trspt.y() );
trans.scale( wval, hval);
trans.translate(-trspt.x(),-trspt.y() );
test->setTransform(trans,true);
//按照上面的代码程序运行后旋转缩放后图元正常
如果按下面的顺序进行矩阵变换就会出线旋转后图元大小发生变化的情况,本来按程序应该是宽度放大一倍,旋转过来后变反了,请问如何解决这个问题,谢谢
//先缩放后旋转 trspt=m_rect.topLeft();
trans.translate(trspt.x(),trspt.y() );
trans.scale( wval, hval);
trans.translate(-trspt.x(),-trspt.y() );
test->setTransform(trans,true);
m_rect=test->boundingRect();
trspt=m_rect.center();
trans1.translate(trspt.x(),trspt.y() );
trans1.rotate(90);
trans1.translate(-trspt.x(),-trspt.y() );
test->setTransform(trans1,true);
把代码放上来吧,我也是在网上的例子上改的,选中两个图元后点击菜单中的group items,函数为void MainWindow::groupItems()
[ 此帖被xinqingfly在2011-04-19 11:46重新编辑 ]