【问题标题】:Real world scale issues with QGraphicsView / QGraphicsItemQGraphicsView / QGraphicsItem 的真实世界规模问题
【发布时间】:2016-12-08 07:34:31
【问题描述】:

我遇到了一些缩放问题 - 我怀疑我遗漏了一些东西......也许有人可以让我直截了当。

我正在使用 QGraphicsScene 和 QGraphicsView 以十进制度的纬度和经度来显示船的位置。对于未发起的职位如下所示:

伦敦:-71.34253 纬度:41.549886

这些是我为自定义 QGraphicsItem 对象设置的位置。这些是“真实世界”坐标。

我的问题是我似乎无法正确显示我的对象,并且我怀疑我不了解在我的 paint() 函数中绘制时应该使用的比例。

我通过 PyQt 使用 Qt,但这应该是一样的,不是吗?这是我的自定义类,它代表一个位置。

class myGraphicsFix(QGraphicsItem):

    def __init__(self):
            super().__init__()

            self.lat = 0.0
            self.lon = 0.0

            self.boatlength = 1.5696e-6 # assuming 6371 km earth diameter, 10 m boat length

    def setLatLon(self, tlat, tlon):
            self.lat = tlat
            self.lon = tlon
            self.setPos(self.lat, self.lon)

    def paint(self, painter, option, widget):
            pen = QPen(Qt.SolidLine)
            pen.setColor(Qt.black)
            pen.setWidth(0.0)
            painter.drawPoint(QPointF(0.0,0.0))

    def boundingRect(self):
            return QRectF(-self.boatlength/2.0,-self.boatlength/2.0, +self.boatlength/2.0, self.boatlength)

当这段代码运行时,我得到的只是一个黑色的实心块,这意味着我的点以某种方式被绘制成巨大的正方形。如果我用 drawEllipse() 替换 drawPoint 如下:

painter.drawEllipse(-self.boatlength/2.0,-self.boatlength/2.0, self.boatlength, self.boatlength)

什么都没有画出来……有什么想法吗?

汤姆。

【问题讨论】:

  • 在第一种情况下,您创建了一个线宽为 0 的笔并且不使用它。你怎么得到东西?在第二种情况下,您绘制一个半径很小且坐标中心很大的椭圆。您如何尝试找到它?
  • 感谢 ilotXXI。在我的第一个案例中,这支笔是里面有 drawEllipse 代码的遗留物。你说得对,drawEllipse 代码很奇怪——我把它改成了 0,0,X 和 Y 半径的船长只有一半,但我仍然得到同样的结果。我的问题真的是我应该使用什么半径?真实世界坐标?

标签: qt pyqt qgraphicsview qgraphicsitem qgraphicsscene


【解决方案1】:

很高兴回答我自己的问题...

是的,QGraphicsItem 中使用的比例是“真实世界”比例。

我遇到的问题是我没有正确调用 drawEllipse 函数。这是有效的清理代码。注意参数中的 QPointF() 对象。

    def paint(self, painter, option, widget):
            pen = QPen()
            pen.setWidth(0)
            painter.setPen(pen)
            painter.drawEllipse(QPointF(0.0,0.0), +self.boatlength/2.0, self.boatlength/2.0)

请注意,在__init__() 方法中,我有self.boatlength = 0.00001,它对应于“真实世界”单位中的船(这里是地球表面的十进制度数)。

现在的事情就像一个魅力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多