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

描画デバイスの作成

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

ウィジェット

QWidgetQt 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 クラスから派生して作成したカスタム・ペイント・エンジンでなければなりません。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.