QPaintEngine Class
QPaintEngineクラスは、QPainter 、特定のプラットフォーム上の特定のデバイスに描画する方法の抽象定義を提供します。詳細...
ヘッダー | #include <QPaintEngine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承メンバを含む全メンバ一覧
- QPaintEngineはPainting Classesの一部です。
パブリックタイプ
enum | DirtyFlag { DirtyPen, DirtyBrush, DirtyBrushOrigin, DirtyFont, DirtyBackground, …, AllDirty } |
flags | DirtyFlags |
enum | PaintEngineFeature { AlphaBlend, Antialiasing, BlendModes, BrushStroke, ConicalGradientFill, …, AllFeatures } |
flags | PaintEngineFeatures |
enum | PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode } |
enum | Type { X11, Windows, MacPrinter, CoreGraphics, QuickDraw, …, Direct2D } |
パブリック関数
QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures()) | |
virtual | ~QPaintEngine() |
virtual bool | begin(QPaintDevice *pdev) = 0 |
virtual void | drawEllipse(const QRectF &rect) |
virtual void | drawEllipse(const QRect &rect) |
virtual void | drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor) |
virtual void | drawLines(const QLineF *lines, int lineCount) |
virtual void | drawLines(const QLine *lines, int lineCount) |
virtual void | drawPath(const QPainterPath &path) |
virtual void | drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0 |
virtual void | drawPoints(const QPoint *points, int pointCount) |
virtual void | drawPoints(const QPointF *points, int pointCount) |
virtual void | drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode) |
virtual void | drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode) |
virtual void | drawRects(const QRectF *rects, int rectCount) |
virtual void | drawRects(const QRect *rects, int rectCount) |
virtual void | drawTextItem(const QPointF &p, const QTextItem &textItem) |
virtual void | drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p) |
virtual bool | end() = 0 |
bool | hasFeature(QPaintEngine::PaintEngineFeatures feature) const |
bool | isActive() const |
QPaintDevice * | paintDevice() const |
QPainter * | painter() const |
void | setActive(bool state) |
virtual QPaintEngine::Type | type() const = 0 |
virtual void | updateState(const QPaintEngineState &state) = 0 |
詳しい説明
Qt では、サポートしているさまざまなペインタバックエンド用に、QPaintEngine のいくつかの実装をあらかじめ用意しています。主なペイントエンジンはラスターペイントエンジンで、ソフトウェアラスターライザを含んでおり、サポートされているすべてのプラットフォームで全機能をサポートしています。これは、Windows、X11、macOS などのQWidget ベースのクラスでペイントするためのデフォルトであり、QImage でペイントするためのバックエンドであり、特定の機能をサポートしていないペイントエンジンのフォールバックとして使用されます。さらに、OpenGL(QOpenGLWidget からアクセス可能)と印刷(QPainter を使ってQPrinter オブジェクトに描画可能)用の QPaintEngine 実装も提供しています。
QPainter を使用して別のバックエンドに描画したい場合は、QPaintEngine をサブクラス化し、そのすべての仮想関数を再実装する必要があります。その後、QPaintDevice をサブクラス化し、仮想関数QPaintDevice::paintEngine() を再実装することで、QPaintEngine の実装が利用可能になります。
QPaintEngine は、それを作成したQPaintDevice によって作成され、所有されます。
QPainter 、QPaintDevice::paintEngine()、Paint Systemも参照してください 。
メンバ型ドキュメント
enum QPaintEngine::DirtyFlag
flags QPaintEngine::DirtyFlags
定数 | 値 | 説明 |
---|---|---|
QPaintEngine::DirtyPen | 0x0001 | ペンが汚れているので更新する必要がある。 |
QPaintEngine::DirtyBrush | 0x0002 | ブラシが汚れており、更新する必要があります。 |
QPaintEngine::DirtyBrushOrigin | 0x0004 | ブラシの原点が汚れており、更新する必要があります。 |
QPaintEngine::DirtyFont | 0x0008 | フォントが汚れており、更新する必要があります。 |
QPaintEngine::DirtyBackground | 0x0010 | 背景が汚れており、更新する必要があります。 |
QPaintEngine::DirtyBackgroundMode | 0x0020 | 背景モードが汚れており、更新する必要があります。 |
QPaintEngine::DirtyTransform | 0x0040 | トランスフォームが汚れており、更新する必要があります。 |
QPaintEngine::DirtyClipRegion | 0x0080 | クリップ領域が汚れており、更新する必要があります。 |
QPaintEngine::DirtyClipPath | 0x0100 | クリップ パスが汚れており、更新する必要があります。 |
QPaintEngine::DirtyHints | 0x0200 | レンダー ヒントが汚れており、更新する必要があります。 |
QPaintEngine::DirtyCompositionMode | 0x0400 | コンポジションモードが汚れており、更新する必要がある。 |
QPaintEngine::DirtyClipEnabled | 0x0800 | クリッピングが有効かどうかが汚れており、更新する必要があります。 |
QPaintEngine::DirtyOpacity | 0x1000 | 定数の不透明度が変更されており、QPaintEngine::updateState ()の状態変更の一部として更新する必要がある。 |
QPaintEngine::AllDirty | 0xffff | 内部的に使用される便利な列挙型。 |
これらの型は、QPaintEngine::updateState ()を使用して、QPaintEngine のさまざまな状態の遅延更新をトリガするために、QPainter によって使用されます。
ペイント・エンジンは、すべてのダーティな状態を更新しなければならない。
DirtyFlags 型はQFlags<DirtyFlag> の typedef です。DirtyFlag 値の OR の組み合わせを格納します。
enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures
この enum は、ペイントエンジンが持つ機能や能力を記述するために使用されます。ある機能がエンジンでサポートされていない場合、QPainter は他の手段でその機能をエミュレートする最善の努力を行い、エミュレートされた結果をアルファブレンドしたQImage をエンジンに渡します。エミュレートできない機能もあります:アルファブレンドとポーターダフ。
定数 | 値 | 説明 |
---|---|---|
QPaintEngine::AlphaBlend | 0x00000080 | エンジンはプリミティブをアルファブレンドできます。 |
QPaintEngine::Antialiasing | 0x00000400 | エンジンは、レンダリングされたプリミティブの外観を向上させるためにアンチエイリアスを使用できます。 |
QPaintEngine::BlendModes | 0x00008000 | ブレンド モードをサポートします。 |
QPaintEngine::BrushStroke | 0x00000800 | エンジンは、塗りつぶしとしてベタ色だけでなくブラシを含むストロークの描画をサポートします(幅 2 の破線グラデーション線など)。 |
QPaintEngine::ConicalGradientFill | 0x00000040 | 円錐形のグ ラデ ィ ン グ塗 り に対応 し てい ます。 |
QPaintEngine::ConstantOpacity | 0x00001000 | QPainter::setOpacity() が提供す る 機能をサポー ト し ます。 |
QPaintEngine::LinearGradientFill | 0x00000010 | 線形グ ラデ ィ ン グ塗 り に対応 し てい ます。 |
QPaintEngine::MaskedBrush | 0x00002000 | エンジンは、アルファ チャンネルまたはマスクを持つテクスチャを持つブラシをレンダリングできます。 |
QPaintEngine::ObjectBoundingModeGradients | 0x00010000 | 座標モー ドQGradient::ObjectBoundingMode を持つグ ラデ ィ ア ン ト をネ イ テ ィ ブにサポー ト し てい ます。それ以外の場合、 QPaintEngine::PatternTransform がサポー ト さ れてい る と き は、 オブジ ェ ク ト のバウンデ ィ ン グ モー ド のグ ラデ ィ エ ン ト は座標モー ドQGradient::LogicalMode のグ ラデ ィ エ ン ト へ変換 さ れ、 座標マ ッ ピ ン グのためのブラシ変換が行われます。 |
QPaintEngine::PainterPaths | 0x00000200 | パ ス をサポー ト し てい ます。 |
QPaintEngine::PaintOutsidePaintEvent | 0x20000000 | ペイント イベント以外でのペイントが可能。 |
QPaintEngine::PatternBrush | 0x00000008 | エ ン ジ ンは、Qt::BrushStyle で指定 さ れてい る ブラシ パターンでブラシをレンダリングできます。 |
QPaintEngine::PatternTransform | 0x00000002 | ブラシ パターンの変換をサポートしています。 |
QPaintEngine::PerspectiveTransform | 0x00004000 | エンジンには、プリミティブに対して透視変換を実行するサポートがあります。 |
QPaintEngine::PixmapTransform | 0x00000004 | 回転やシ アーを含む pixmap の変換が可能。 |
QPaintEngine::PorterDuff | 0x00000100 | エンジンは Porter-Duff 操作をサポートしています。 |
QPaintEngine::PrimitiveTransform | 0x00000001 | 描画プリミティブの変換がサポートされています。 |
QPaintEngine::RadialGradientFill | 0x00000020 | 放射状のグ ラデ ィ ア ン ト 塗 り をサポー ト し てい ます。 |
QPaintEngine::RasterOpModes | 0x00020000 | ビ ッ ト 単位の ラ ス タ 操作をサポー ト し てい ます。 |
QPaintEngine::AllFeatures | 0xffffffff | 上記のすべての機能。この列挙値は通常、ビット マスクとして使用されます。 |
PaintEngineFeatures 型はQFlags<PaintEngineFeature> の typedef です。PaintEngineFeature 値の OR の組み合わせを格納します。
enum QPaintEngine::PolygonDrawMode
定数 | 値 | 説明 |
---|---|---|
QPaintEngine::OddEvenMode | 0 | ポリゴンは OddEven 塗りつぶしルールで描画されます。 |
QPaintEngine::WindingMode | 1 | 多角形は Winding fill rule を使って描画する。 |
QPaintEngine::ConvexMode | 2 | 多角形は凸多角形であり、利用可能な場合は特殊なアルゴリズムを使って描画することができる。 |
QPaintEngine::PolylineMode | 3 | 多角形の輪郭のみを描画する。 |
enum QPaintEngine::Type
定数 | 値 | 説明 |
---|---|---|
QPaintEngine::X11 | 0 | |
QPaintEngine::Windows | 1 | |
QPaintEngine::MacPrinter | 4 | |
QPaintEngine::CoreGraphics | 3 | macOSのQuartz2D (CoreGraphics) |
QPaintEngine::QuickDraw | 2 | macOSのQuickDraw |
QPaintEngine::QWindowSystem | 5 | 組み込みLinux用Qt |
QPaintEngine::OpenGL | 6 | |
QPaintEngine::Picture | 7 | QPicture フォーマット |
QPaintEngine::SVG | 8 | Scalable Vector Graphics XMLフォーマット |
QPaintEngine::Raster | 9 | |
QPaintEngine::Direct3D | 10 | Windowsのみ、Direct3Dベースのエンジン |
QPaintEngine::Pdf | 11 | ポータブル・ドキュメント形式 |
QPaintEngine::OpenVG | 12 | |
QPaintEngine::User | 50 | 最初のユーザータイプID |
QPaintEngine::MaxUser | 100 | 最後のユーザー タイプ ID |
QPaintEngine::OpenGL2 | 13 | |
QPaintEngine::PaintBuffer | 14 | |
QPaintEngine::Blitter | 15 | |
QPaintEngine::Direct2D | 16 | Windowsのみ、Direct2Dベースエンジン |
メンバー関数ドキュメント
[explicit]
QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
caps で指定 し た featureset を持つペ イ ン ト エ ン ジ ン を作成 し ます。
[virtual noexcept]
QPaintEngine::~QPaintEngine()
ペイントエンジンを破壊する。
[pure virtual]
bool QPaintEngine::begin(QPaintDevice *pdev)
この関数を再実装して、ペイント・デバイスpdev でペイントを開始するときに、ペイント・エンジンを初期化します。初期化に成功した場合は true を返し、失敗した場合は false を返します。
end() およびisActive()も参照してください 。
[virtual]
void QPaintEngine::drawEllipse(const QRectF &rect)
この関数を再実装して、矩形rect に収まる最大の楕円を描画します。
デフォルトの実装ではdrawPolygon() を呼び出す。
[virtual]
void QPaintEngine::drawEllipse(const QRect &rect)
これはオーバーロードされた関数である。
この関数のデフォルト実装は、この関数の浮動小数点バージョンを呼び出します。
[virtual]
void QPaintEngine::drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
この関数を再実装して、与えられたsr の矩形で指定されたimage の部分を、与えられた変換フラグflags を使って、与えられたrectangle に描画し、pixmap に変換する。
[virtual]
void QPaintEngine::drawLines(const QLineF *lines, int lineCount)
デフォルトの実装では、lines の行リストは、ペイントエンジンの機能セットに応じて、drawPath() またはdrawPolygon() へのlineCount 個別の呼び出しに分割されます。
[virtual]
void QPaintEngine::drawLines(const QLine *lines, int lineCount)
これはオーバーロードされた関数である。
デフォルトの実装では、lines の最初のlineCount 行をQLineF に変換し、この関数の浮動小数点バージョンを呼び出す。
[virtual]
void QPaintEngine::drawPath(const QPainterPath &path)
デフォルトの実装では、path を無視し、何もしない。
[pure virtual]
void QPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
この関数を再実装して、与えられたr にsr の矩形で指定されたpm の部分を描画する。
[virtual]
void QPaintEngine::drawPoints(const QPoint *points, int pointCount)
バッファ内の最初のpointCount ポイントを描画する。points
デフォルトの実装では、points の最初のpointCount QPoints を QPointFs に変換し、浮動小数点バージョンの drawPoints を呼び出します。
[virtual]
void QPaintEngine::drawPoints(const QPointF *points, int pointCount)
バッファ内の最初のpointCount ポイントを描画する。points
[virtual]
void QPaintEngine::drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
この仮想関数を再実装し、モードmode を使用して、points のpointCount 先頭点で定義される多角形を描画する。
注意: drawPolygon()関数の少なくとも1つを再実装する必要があります。
[virtual]
void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
これはオーバーロードされた関数である。
この仮想関数を再実装して、points のpointCount 先頭点で定義される多角形を、モードmode を使用して描画します。
注意: drawPolygon()関数の少なくとも1つを再実装する必要があります。
[virtual]
void QPaintEngine::drawRects(const QRectF *rects, int rectCount)
バ ッ フ ァrects 内の最初のrectCount 矩形を描画 し ます。この関数のデフォルト実装では、ペイントエンジンの機能セットに応じてdrawPath() またはdrawPolygon() を呼び出します。
[virtual]
void QPaintEngine::drawRects(const QRect *rects, int rectCount)
これはオーバーロードされた関数である。
デフォルトの実装では、バッファrects の最初のrectCount 矩形をQRectF に変換し、この関数の浮動小数点バージョンを呼び出します。
[virtual]
void QPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
こ の関数は、 テ キ ス ト 項目textItem を位置p に描画 し ます。この関数のデフォルトの実装は、テキストをQPainterPath に変換し、その結果のパスを描画します。
[virtual]
void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
この関数を再実装して、与えられたrect のpixmap を、与えられたp から描画します。pixmap はrect が埋まるまで繰り返し描画される。
[pure virtual]
bool QPaintEngine::end()
この関数を再実装して、現在のペイント・デバイスのペイントを終了する。ペイントが正常に終了した場合は true を返し、そうでない場合は false を返します。
bool QPaintEngine::hasFeature(QPaintEngine::PaintEngineFeatures feature) const
ペ イ ン ト エ ン ジ ンが指定 さ れたfeature をサポー ト し てい る 場合はtrue
を返し、 そ う でない場合はfalse
を返す。
bool QPaintEngine::isActive() const
ペイントエンジンがアクティブに描画している場合はtrue
を返し、そうでない場合はfalse
を返す。
setActive()も参照 。
QPaintDevice *QPaintEngine::paintDevice() const
ペインティングがアクティブな場合は、このエンジンがペインティングを行っているデバイスを返します。そうでない場合は、nullptr
を返します。
QPainter *QPaintEngine::painter() const
ペイントエンジンのペインターを返します。
void QPaintEngine::setActive(bool state)
ペ イ ン ト エ ン ジ ンのア ク テ ィ ブ状態をstate に設定する。
isActive()も参照 。
[pure virtual]
QPaintEngine::Type QPaintEngine::type() const
この関数を再実装して、ペイントエンジンType を返します。
[pure virtual]
void QPaintEngine::updateState(const QPaintEngineState &state)
ペイントエンジンの状態を更新するために、この関数を再実装します。
実装されると、この関数はペイントエンジンの現在のstate をチェックし、変更されたプロパティを更新する役割を担います。QPaintEngineState::state() 関数を使用して更新が必要なプロパティを調べ、対応するget function を使用して指定されたプロパティの現在値を取得します。
QPaintEngineStateも参照してください 。
© 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.