QPainterPath QTransform :: map

时间:2013-12-23 08:58:48

标签: c++ qt qt4 qwt

我想绘制一个有角度的矩形。它可以工作但是当我改变角度时,矩形的位置在其他地方发生变化。我无法理解。有人帮我一把吗?

这是我的代码:

QPoint point = QPoint(100,100); // has to be shown at this point
QSize  size  = QSize(30,30);
QRect rect = QRect(point,size);


QPainterPath Path ;
Path.addRect(rect);

QTransform t; 
t.rotate(myAngle);

QPainterPath newPath= t.map(Path);

QwtPlotShapeItem *Item = new QwtPlotShapeItem( "Shape Name" );
Item->setItemAttribute( QwtPlotItem::Legend, true );
Item->setRenderHint( QwtPlotItem::RenderAntialiased, true );
Item->setShape(newPath );
Item->setPen( Qt::black );
Item->setBrush( QColor("Grey") );
Item->attach(this);

我认为map()函数会导致此问题。但我不知道为什么。感谢您的建议

1 个答案:

答案 0 :(得分:1)

QTransform::rotate使用(0,0)中心点旋转坐标系。您的矩形不在中心,因此旋转时它将显着移动。您应该将矩形放在坐标系的中心(点=( - 15,-15))并在t.translate之后使用t.rotate将旋转的矩形移动到适当的位置。