2

最初にdrawBackground()関数で背景を描画したQGraphicsSceneがあります。ただし、これにはかなりの数の計算が必要であり、かなり遅いことが判明したため、代わりに多数のアイテムを作成しました。これは予想通りのスピードアップでした。

私の質問:これらのアイテムを背景として扱う方法はありますか?それらを背景アイテムとして扱っても問題ありませんか?

ありがとう

4

1 に答える 1

1

QGraphicsScene に関しては 3 つのレイヤーがあります (Qt のドキュメントを参照)。

  • QGraphicsScene::ItemLayer

アイテムレイヤー。QGraphicsScene は、仮想関数 drawItems() を呼び出すことにより、このレイヤーにあるすべてのアイテムをレンダリングします。アイテム レイヤーは、背景レイヤーの後、前景レイヤーの前に描画されます。

  • QGraphicsScene::BackgroundLayer

背景レイヤー。QGraphicsScene は、仮想関数 drawBackground() を呼び出して、このレイヤーにシーンの背景をレンダリングします。背景レイヤーはすべてのレイヤーの最初に描画されます。

  • QGraphicsScene::ForegroundLayer

前景レイヤー。QGraphicsScene は、仮想関数 drawForeground() を呼び出すことにより、このレイヤーでシーンの前景をレンダリングします。前景レイヤーは、すべてのレイヤーの最後に描画されます。

したがって、アイテムを背景レイヤーに配置する合法的な方法はありません。ただし、 QGraphicsItem Sorting を使用して、一部のアイテムを他のアイテムの背後に配置し、それらをbackgroundとして表示することができます。

于 2010-01-24T17:49:56.433 に答える