Pyqt4将QGraphicsPixmapItem绘制到另一个QGraphicsPixmapItem上

时间:2014-02-09 07:56:09

标签: python animation pyqt4 layer qgraphicsitem

我刚开始使用PyQt4,现在我正在尝试使用QGraphicsItemAnimation创建一个小动画。我之前从未使用过PyQt4,我总是使用pygame。必须有不同的图层,qpixmaps可以在这些图层上进行动画处理,但这些图层也可以绘制到其他图层上,然后整个图层可以通过所有qpixmaps绘制到其上进行动画处理。我在某个地方看到,使用QGraphicsItemAnimation,我可以为QGraphicsItems设置动画,而不必将它们重新绘制到他们所在的图层,就像我必须在pygame中一样。这有点难以解释。我希望你明白我的意思。我会添加一些图片,以便更清晰。

例如,如果我有这两种形状:

enter image description here

我只能移动矩形的qgraphicsitem:

enter image description here

但是我也可以移动整个图层,椭圆和矩形被绘制到同一个图层上,所以如果我在移动矩形后移动整个图层,它将如下所示:

enter image description here

为了实现这一点,我不得不创建这些“图层”,我想通过将QGraphicsPixmapItems用作图层然后将其他QGraphicsPixmapItems绘制到它们上来做到这一点,无论是作为图层还是作为单个图片。类似于将QGraphicsItem添加到QGraphicsScene时的情况,但据我所知,QGraphicsScenes无法使用QGraphicsItemAnimation进行动画处理。我查看了文档,但我只能找到QGraphicsPixmapItem.setPixmap,它取代了旧的pixmap,而不是在它上面添加另一个。那么如何将QGraphicsPixmapItem添加到另一个QGraphicsPixmapItem?如果重要的话,我正在使用Python 2.7.3。

1 个答案:

答案 0 :(得分:1)

要创建“图层”,请将项目添加到QGraphicsItemGroup

QGraphicsItemGroup类继承QGraphicsItem,因此可以将其设置为动画项目,并将其所有子项目作为一个单元进行动画处理。同时,子项仍然可以单独设置动画。