2013-12-23 6 views
2

Я хотел бы нарисовать прямоугольник с углом. Он работает, но когда я меняю угол, расположение прямоугольника меняется где-то в другом месте. Я не мог этого понять. Кто-нибудь дает мне руку?QPainterPath QTransform :: map

Вот мой код:

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); 

Я думаю, что карта() функция причина этой проблемы. Но я не знаю почему. Спасибо за советы

ответ

1

QTransform::rotate Вращение системы координат с использованием (0, 0) центральной точки. Ваш прямоугольник не находится в центре, поэтому при его повороте он будет значительно перемещен. Вы должны поместить свой прямоугольник в центр системы координат (point = (- 15, -15)) и использовать t.translate после t.rotate для перемещения повернутого прямоугольника в соответствующее положение.