【问题标题】:Qpainter.rotate() question - qgisQpainter.rotate() 问题 - qgis
【发布时间】:2010-10-24 23:23:16
【问题描述】:

我正在自定义 QuantumGIS,它使用 Qt 的 Qpainter 来绘制和绘制...

我正在尝试在画布上绘制一条多段线,该多段线将作为消息队列的更新。绘制非常好……但在我作为更新获得的多段线或多边形对象中还包括一个角度场用于旋转物体。 问题是,当我尝试在 qpainter 使用painter.rotate() 方法绘制折线之前旋转线时,线旋转得很好,但绘制的线的位置会发生变化......并且它会在每次缩放和Qgis画布的平底锅.. 在设置painter.rotate() 之前,我保存了painter 状态并在绘制之后再次恢复它的状态,我认为这类似于OpenGL 的push/popMatrix 函数。 Qpainter的保存恢复功能和opengl的push/popMatrix功能类似吗??

这是一个代码sn-p:

p->save();
  //p->rotate(45);
  p->scale( 1.0 / rasterScaleFactor, 1.0 / rasterScaleFactor );
  p->drawPolyline( pa );
  p->restore();

感谢您的帮助。 谢谢。

【问题讨论】:

    标签: qt qpainter qgis


    【解决方案1】:

    最好的办法是在QGIS Mailing List 中提出这个问题

    【讨论】:

      【解决方案2】:

      阅读documentation,您会看到 QPainter::save() 仅“保存当前的画家状态”。它不会重置转换。您的问题是因为原始转换矩阵与您自己的比例或旋转混合在一起。您的代码 sn-p 太少,无法理解绘画的上下文,但我认为您需要在绘制折线之前适当地重置或修改转换,可能使用 QPainter::setTransform()

      我还建议阅读 QPainter documentation 中的坐标变换部分,以及尝试 related example

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-06
        • 2022-01-27
        • 1970-01-01
        • 2020-11-23
        • 1970-01-01
        • 2023-02-08
        相关资源
        最近更新 更多