gpt4 book ai didi

c++ - QPainterPath QTransform:: map

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:55 26 4
gpt4 key购买 nike

我想画一个有角度的矩形。它可以工作,但是当我改变角度时,矩形的位置会在其他地方发生变化。我听不懂。有人帮我吗?

这是我的代码:

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() 函数导致了这个问题。但我不知道为什么。谢谢指教

最佳答案

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

关于c++ - QPainterPath QTransform:: map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com