QImageとQPixmapの違いはわかりませんが、同じ機能を提供しているようです。 QImageをいつ使用し、QPixmapをいつ使用する必要がありますか?
QImage および QPixmap のドキュメントを読んで、簡単に回答しました:
QPixmapクラスは、使用可能なoff-screen画像表現です。ペイントデバイスとして。
QImageクラスは、ハードウェアに依存しない画像表現を提供し、ピクセルデータへの直接アクセスを可能にし、ペイントデバイスとして使用できます。
編集:また、@ Daveの答えから:
GUIスレッドの外部でQPixmapを操作することはできませんが、QImageにはそのような制限はありません。
そして、@ Arnoldから:
これは、通常(常にではない)適用される短い要約です。
- 画像の操作、修正、ピクセルの変更などを行う場合は、QImageを使用します。
- 同じ画像を画面に複数回描画する場合は、QPixmapに変換します。
Qt Labsには、Qtグラフィックスシステムについて多くのことを説明する素晴らしい記事シリーズがあります。 この記事 特にQImage
とQPixmap
のセクションがあります。
これは、通常(常にではない)適用される短い要約です。
QImage
を使用します。QPixmap
に変換します。1つの重要な違いは、メインGUIスレッド以外ではQPixmap
を作成または操作できないことです。ただし、バックグラウンドスレッドでQImage
インスタンスを作成および操作し、GUIスレッドに戻してから変換することはできます。
産業環境で重要:
QPixmapは、表示を行うビデオカードに保存されます。 QImageではありません。
そのため、アプリケーションを実行しているサーバーと表示を行うクライアントステーションがある場合、ネットワーク使用率の点で非常に重要です。
Pixmapでは、再描画はネットワーク上で再描画の命令(数バイト)のみを送信することになります。
QImageでは、画像全体(約数MB)を送信します。
QPixmapは、コード内でpixel
表現が重要ではない「画像オブジェクト」です。したがって、QPixmapは画像のレンダリング用に設計および最適化されますディスプレイ画面では、X11の使用時にXServerに保存されるため、XWindowでのQPixmapの描画は、データが既にサーバー上にあり、すぐに使用できるため、QImageを描画するよりもはるかに高速です。
QPixmapを使用する場合:既存の画像(アイコン..背景..など)を特に繰り返し描画する場合は、QPixmapを使用します。
QImageはclientコードの「メモリ内のピクセルの配列」であり、QImageはI/O、およびピクセルへの直接アクセスと操作用に設計および最適化されています。
QImageを使用する場合:Qpaintを使用して描画する場合、または画像ピクセルを操作する場合。
QBitmapは、深度1を保証する便利なQPixmapサブクラスであり、モノクロ(1ビット深度)ピックスマップです。 QPixmapと同様に、QBitmapは暗黙的なデータ共有の使用に最適化されています。