如果使用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助手提供,问题来源于学员提问