QGraphicsScene的坐标矫正

QGraphicsScene的坐标矫正在用一个QGraphicsScene做一个工具发现他的坐标我们经常用到的那样,而是原点在左上角的位置,正x方向朝右,而正y方向是朝下的,这就需要做两个工作,一个是将坐标原点放到试图的正中间而不是左上角,第二个将y轴朝上,而不是朝下,这样的话就更符合我们一般人对坐标系统的认识,关键里面的item的值,更符合我门熟悉的那个坐标系统。将坐标原点会中心的代码如下:classItemGraphicsScene(QtGui.QGraphicsScene):def__init__(self):

在用一个QGraphicsScene做一个工具发现他的坐标我们经常用到的那样,而是原点在左上角的位置,正x方向朝右,而正y方向是朝下的,这就需要做两个工作,一个是将坐标原点放到试图的正中间而不是左上角,第二个将y轴朝上,而不是朝下,这样的话就更符合我们一般人对坐标系统的认识,关键里面的item的值,更符合我门熟悉的那个坐标系统。
将坐标原点会中心的代码如下:

class ItemGraphicsScene(QtGui.QGraphicsScene):
    def __init__(self):
        super(ItemGraphicsScene, self).__init__()
        self.size = [500, 618]
        self.setSceneRect(-self.size[0] / 2, -self.size[1] / 2, self.size[0], self.size[1])

就是设置了下左上角的坐标和右下角的坐标,这样就将坐标中心放到了界面的中心位置。

再说上下反转的问题,就是让y轴的正向朝上,可以用下面这个:

class ItemGraphicsView(QtGui.QGraphicsView):
    def __init__(self):
        super(ItemGraphicsView, self).__init__()
        self.scale(1, -1)

也就是让y轴方向缩放为-1,这样是y轴朝上了,可是如果我们要给这个view一个背景图片的话,那么图片也将以前反转,为了避免这个问题还的将图片再向下反转下

    def drawBackground(self, painter, rect):
        background_image = QtGui.QImage(self.background_image).mirrored(False, True)
        painter.drawImage(self.sceneRect(), background_image, QtCore.QRectF(background_image.rect()))
        # super(ItemGraphicsView, self).drawBackground(painter, rect)

这样就得到背景图片是正的,而且坐标中心和轴向的朝向都正确了,后面如果我们要获取item的坐标位置就比较好办了,尤其是左右做镜像的话,只需将x轴的值取反就行,方便省事易于阅读。

今天的文章QGraphicsScene的坐标矫正分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/12787.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注