Qt qPaint.rotate()问题-qgis

Qt qPaint.rotate()问题-qgis,qt,qpainter,qgis,Qt,Qpainter,Qgis,我正在定制QuantumGIS,它使用Qt的Qpainter绘制和绘制 我试图在画布上绘制一条多段线,该多段线将通过消息队列进行更新。绘制非常精细…但在作为更新获取的多段线或多边形对象中,还包括一个用于对象旋转的角度字段。 问题是,当我尝试在QPaint使用painter.rotate()方法绘制多段线之前旋转该线时,该线旋转得很好,但绘制的线的位置会发生变化..并且在Qgis画布的每次缩放和平移时都会发生变化。。 在设置painter.rotate()之前,我正在保存painter状态,在绘制

我正在定制QuantumGIS,它使用Qt的Qpainter绘制和绘制

我试图在画布上绘制一条多段线,该多段线将通过消息队列进行更新。绘制非常精细…但在作为更新获取的多段线或多边形对象中,还包括一个用于对象旋转的角度字段。 问题是,当我尝试在QPaint使用painter.rotate()方法绘制多段线之前旋转该线时,该线旋转得很好,但绘制的线的位置会发生变化..并且在Qgis画布的每次缩放和平移时都会发生变化。。 在设置painter.rotate()之前,我正在保存painter状态,在绘制之后,我再次恢复其状态,我认为这类似于OpenGL的push/popMatrix函数。 QPaint的save restore函数是否与opengl的push/popMatrix函数类似

以下是一段代码片段:

p->save();
  //p->rotate(45);
  p->scale( 1.0 / rasterScaleFactor, 1.0 / rasterScaleFactor );
  p->drawPolyline( pa );
  p->restore();
谢谢你的帮助。
谢谢。

您的最佳选择是在中问这个问题您的最佳选择是在阅读中问这个问题,您会看到QPaint::save()仅“保存当前绘制状态”。它不会重置转换。您的问题是因为原始变换矩阵与您自己的缩放或旋转混合。您的代码片段太小,无法理解绘制的上下文,但我认为您需要在绘制多段线之前适当地重置或修改转换,可能需要使用

我还建议您阅读中的“坐标变换”部分,并尝试。

阅读,您会看到QPaint::save()仅“保存当前绘制状态”。它不会重置转换。您的问题是因为原始变换矩阵与您自己的缩放或旋转混合。您的代码片段太小,无法理解绘制的上下文,但我认为您需要在绘制多段线之前适当地重置或修改转换,可能需要使用

我还建议您阅读中的“坐标变换”部分,并尝试使用