私は以下のUIを持っています。ここでは、超音波(周波数+時間音の表現)が表示されます。したがって、画像はどこかからロードされていないので、WAV
ファイルを読み取っている間に、それはQPainter
によって描画されます。ウィンドウ内で1024x90000イメージを効果的にスクロールする方法はありますか?
私の現在の実装では、画像が描画されている単一の巨大QImage
オブジェクトです。
QPainter painter(this);
// (int, int, QImage*, int, int)
painter.drawImage(0, 0, *m_sonogram, 0, m_offset);
しかし、私が知っているように、QPixmap
は、画面上のピックスマップを表示するために最適化されているので、私は後QPixmap
にQImage
を変換する必要があります。そしてpaintEvent()
に、私は、ウィジェット上で大QImage
の一部を描きますソノグラムの描画は行われますか?
また、小さいサイズの別のQPixmap
オブジェクトのリンクリストのいくつかの種類として大きな画像を保つというようにQtの自動切断手順とを避けるために、小さなオブジェクトのリスト上で動作するようにpaintEvent()
を賢くする価値がありますか?
私のQImageが十分大きい場合は、それぞれpaintEvent()
が多く、CPU
を消費します。
アドバイスのすべての種類は、あなたが静止画像(または不定期に更新画像)を持っている場合、それは(パフォーマンスのために)十分価値がある、Qtのアプリ開発の私の限られた経験で歓迎:)
おそらく、これを実行したいマシンに関するものを投稿してください。リンクされたリストを使用することは、ターゲットマシンに応じてスマートになる可能性があります。 – EKS
多分私は間違っていますが、ペイントイベントごとにイメージ全体を描画しているようです。ビューポートに現在表示している画像の部分だけをペイントすることができます。 CPU消費量を一定に保つ必要があります。 – Masci
@Masci:QPaintEventドキュメントの「Automatic Clipping」を参照してください。Qtはこれを自動的に行い、QPaintEventクリッピング状態を明示的にQPainterにコピーする必要はありません。 – timday