描画デバイスとバックエンド

描画デバイスの作成

QPaintDevice クラスは描画可能なオブジェクトの基本クラスです。つまり、QPainterQPaintDevice のどのサブクラスにも描画できます。QPaintDevice描画機能は、QWidgetQImageQPixmapQPictureQPrinterQOpenGLPaintDevice によって実装されています。

ウィジェット

QWidget クラスはQt Widgetsモジュールのユーザー・インターフェース要素の基本クラスです。ウィンドウ・システムからマウス、キーボード、その他のイベントを受け取り、それ自身の表現を画面に描画します。

イメージ

QImage クラスは、ハードウェアに依存しない画像表現を提供します。この画像表現は、I/O 用に設計され最適化されており、ピクセルへの直接アクセスや操作が可能です。QImage は、モノクロ、8 ビット、32 ビット、アルファブレンド画像など、いくつかの画像フォーマットをサポートしています。

QImage をペイント・デバイスとして使用する利点のひとつは、プラットフォームに依存しない方法で、あらゆる描画操作のピクセルの正確性を保証できることです。もう1つの利点は、現在のGUIスレッドとは別のスレッドでペイントを実行できることです。

ピクセルマップ

QPixmap クラスは、画面上に画像を表示するために設計され、最適化された画面外画像表現です。QImageつまり、ピクセルにはQPainter 関数を使うか、QPixmapQImage に変換することでしかアクセスできません。

Qt では、QPixmap を使った描画を最適化するために、QPixmapCache クラスを提供しています。このクラスは、生成にコストのかかるピクセルマップを、キャッシュの上限を超えるストレージ容量を使わずに一時的に保存するために使用できます。

Qt はQPixmap を継承したQBitmap コンビニエンスクラスも提供しています。QBitmap はモノクロ(深さ 1 ビット)の pixmap を保証し、主にQCursorQBrush のカスタムオブジェクトを作成したり、QRegion オブジェクトを構築したりするために使用されます。

OpenGL ペイントデバイス

前述したように、QtはQtアプリケーションでOpenGLを使いやすくするクラスを提供しています。例えば、QOpenGLPaintDevice は、QPainter でレンダリングするための OpenGL API を有効にします。

画像

QPicture クラスは、QPainter コマンドを記録・再生するペイントデバイスです。ピクチャは、ペインタコマンドをプラットフォームに依存しないフォーマットでIOデバイスにシリアライズします。QPicture 、解像度にも依存しません。つまり、QPicture 、異なるデバイス(例えば、svg、pdf、ps、プリンタ、スクリーン)で同じように表示することができます。

Qt は、QPicture::load() およびQPicture::save() 関数と、画像の読み込みと保存のためのストリーミング演算子を提供しています。

カスタムバックエンド

新しいバックエンドのサポートは、QPaintDevice クラスを継承し、QPaintDevice::paintEngine() 関数を再実装して、QPainter にどのペイントエンジンを使って描画するかを指定することで実装できます。実際にデバイスに描画するためには、このペイント・エンジンはQPaintEngine クラスから派生して作成したカスタム・ペイント・エンジンでなければなりません。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。