QgraphicStextItem:在两个方向(左右)上平均增加大小



背景

我在QGraphicsScene内使用QGraphicsTextItem,并希望将文本中心居中,并随着时间的流逝而缓慢而平稳地使其更大。

对于QGraphicsTextItem,没有setWidth()/setRight()功能,而是使用setScale()来增加大小。不过,该位置将保持不变,因为我还没有找到任何方法来对齐图形项目,因此我还需要使用setPos()

更改位置

问题是setPos()setScale()不能很好地组合,因为第一个使用像素,第二个是相对

问题

我如何将文本置于文本并在(左/右)方向上增加大小?

感谢您的帮助!

转换相对于一个点,可以通过函数setTransFormoriginpoint()更改此点,因为需要对象不移动并且只规模缩放,然后您必须确定该点点位于项目的中心。

item.setTransformOriginPoint(item.boundingRect().center())
item.setScale(factor)

示例:

if __name__ == '__main__':
    import sys
    app = QApplication(sys.argv)
    w = QGraphicsView()
    w.setScene(QGraphicsScene(QRectF(0, 0, 640, 480)))
    w.show()
    it = QGraphicsTextItem("test")
    w.scene().addItem(it)
    it.setPos(320, 240)
    it.setTransformOriginPoint(it.boundingRect().center())
    timeline = QTimeLine()
    timeline.setFrameRange(1, 10)
    timeline.setCurveShape(QTimeLine.CosineCurve)
    timeline.frameChanged.connect(it.setScale)
    timeline.start()
    sys.exit(app.exec_())

最新更新