6

私は Qt/C++ を使用しており、大規模で複雑な QGraphicsScene を描画しようとしています。多くのオブジェクトを追加すると、パンとズームが不快なほど遅くなります。(もちろん、ここで驚くことではありません)。デバイス座標のキャッシュ (特定のポイントへのパンに役立ちます) や最小限のビューポートの更新などで遊んでみましたが、最終的にはオブジェクトが多すぎます。私がやりたいのは、何らかの方法で UI を制御することからアイテムを非同期的に描画することです。つまり、Google マップと同じように、パンとズームを行い、できるだけ早く描画を追いつきたいのですが、アイテムの描画が完了する前にもう一度パンできるようにしたいと考えています。

私が試みている 1 つの方法は、2 つの QGraphicsScenes を作成することです。1 つは実際のオブジェクトを持っていますが、QGraphicsView にアタッチされていません。他の QGraphicsScene は QGraphicsView に接続されていますが、画面をカバーするサイズのタイル化された QPixmap がいくつかあるだけです。計画では、予備の CPU サイクルを使用して、必要なタイル ピックスマップを更新します。これにより、レンダリングに必要な制御が可能になるようです (したがって、表示されているシーン全体を再レンダリングする際にブロックする必要はありません)。考え?誰かがこれを実装しましたか?

4

1 に答える 1

3

こちらをご覧ください:スレッドでのコンテンツの生成

これはあなたがやろうとしていることと似ているようです。タイル メカニズムは、大量のデータを読み込むための非常に一般的な方法です。投稿されたリンク以外に、を使用した簡単な例は見たことがありませんQGraphicsView

40000 Chipsは、大量のデータの管理についても示しています。

于 2010-02-10T19:21:20.410 に答える