9

私は、ソノグラム (周波数 + 時間の音の表現) が表示される次の UI を持っています。そのため、画像はどこかから読み込まれるのではなく、ファイルのQPainter読み込み中に描画されWAVます。

UI

QImage私の現在の実装は、画像が描画される単一の巨大なオブジェクトです。では、ウィジェットpaintEvent()に大きな部分を描画します。QImage

QPainter painter(this);
// (int, int, QImage*, int, int)
painter.drawImage(0, 0, *m_sonogram, 0, m_offset);

しかし、私が知っているように、QPixmapは画面にピックスマップを表示するために最適化されているので、ソノグラムの描画が完了QImageした後に を に変換する必要がありますか?QPixmap

QPixmapまた、Qt の自動カット手順などを回避するために、小さなサイズの個別のオブジェクトのリンクされたリストのようなものとして大きな画像を保持paintEvent()し、小さなオブジェクトのリストを操作することをよりスマートにすることは価値がありますか?

私の QImage が十分に大きい場合、それぞれpaintEvent()が大量のCPU.

あらゆる種類のアドバイスを歓迎します:)

4

1 に答える 1

1

はい、Qt アプリ開発の私の限られた経験では、静的なイメージ (または頻繁に更新されないイメージ) がある場合は、(パフォーマンス上の目的で)QPixmapそこから を作成QPainter::drawPixmapし、paintEventハンドラーで使用するために維持する価値があります。

ただし、約 4Kx4K よりも大きな画像でこれを試したことはありません。そのため、巨大な画像で機能するか、グラフィックス メモリに負荷がかかり始めたときにひどく倒れるかはわかりません。複雑なタイル システムの追加を検討する前に、ぜひ試してみてください。

于 2012-02-28T23:07:59.903 に答える