QT开发中文网

不是QPainterPath, 是QPainter

如果使用QPainter绘制矩形并旋转后,你可以通过以下方式获取旋转后的四个顶点坐标:

// 创建QPainter对象,并设置绘图设备
QPainter painter;
painter.begin(this); // 这里的this可以是QWidget或QPixmap等

// 设置旋转角度和矩形位置
int angle = 45; // 旋转角度,单位为度
QRect rect(100, 100, 200, 100); // 矩形位置和大小

// 绘制矩形并进行旋转操作
painter.save(); // 先保存当前状态
painter.translate(rect.center()); // 平移到矩形中心点
painter.rotate(angle); // 进行旋转操作
painter.drawRect(-rect.width() / 2, -rect.height() / 2, rect.width(), rect.height()); // 绘制矩形,以中心点为原点绘制
painter.restore(); // 恢复之前保存的状态

// 获取四个顶点的坐标(相对于窗口坐标系)
QPointF topLeft = painter.transform().map(QPointF(rect.left(), rect.top()));
QPointF topRight = painter.transform().map(QPointF(rect.right(), rect.top()));
QPointF bottomLeft = painter.transform().map(QPointF(rect.left(), rect.bottom()));
QPointF bottomRight = painter.transform().map(QPointF(rect.right(), rect.bottom()));

// 打印结果
qDebug() << "Top Left: " << topLeft;
qDebug() << "Top Right: " << topRight;
qDebug() << "Bottom Left: " << bottomLeft;
qDebug() << "Bottom Right: " << bottomRight;

painter.end();

上述代码将在给定位置绘制一个矩形,并以指定的角度进行旋转。通过painter.transform()可以获取到当前的变换矩阵,使用map()函数可以将原始坐标映射为旋转后的坐标。注意,在这个例子中,假设绘图设备是QWidget或QPixmap,并且代码位于正确的绘图环境中(例如在paintEvent函数内部)。根据实际情况,你可能需要进行一些调整和适应。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://qt.0voice.com/?id=8838

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?