QPaintEngine Class

QPaintEngineクラスは、QPainter 、特定のプラットフォーム上の特定のデバイスに描画する方法の抽象定義を提供します。詳細...

Header: #include <QPaintEngine>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

パブリック型

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 によって作成され、所有されます。

QPainterQPaintDevice::paintEngine()、Paint Systemも参照してください

メンバ型ドキュメント

enum QPaintEngine::DirtyFlag
flags QPaintEngine::DirtyFlags

定数説明
QPaintEngine::DirtyPen0x0001ペンが汚れているので更新する必要がある。
QPaintEngine::DirtyBrush0x0002ブラシが汚れており、更新する必要があります。
QPaintEngine::DirtyBrushOrigin0x0004ブラシの原点が汚れており、更新する必要があります。
QPaintEngine::DirtyFont0x0008フォントが汚れており、更新する必要があります。
QPaintEngine::DirtyBackground0x0010背景が汚れており、更新する必要があります。
QPaintEngine::DirtyBackgroundMode0x0020背景モードが汚れており、更新する必要があります。
QPaintEngine::DirtyTransform0x0040トランスフォームが汚れており、更新する必要があります。
QPaintEngine::DirtyClipRegion0x0080クリップ領域が汚れており、更新する必要があります。
QPaintEngine::DirtyClipPath0x0100クリップ パスが汚れており、更新する必要があります。
QPaintEngine::DirtyHints0x0200レンダー ヒントが汚れており、更新する必要があります。
QPaintEngine::DirtyCompositionMode0x0400コンポジションモードが汚れており、更新する必要がある。
QPaintEngine::DirtyClipEnabled0x0800クリッピングが有効かどうかが汚れており、更新する必要があります。
QPaintEngine::DirtyOpacity0x1000定数の不透明度が変更されており、QPaintEngine::updateState ()の状態変更の一部として更新する必要がある。
QPaintEngine::AllDirty0xffff内部的に使用される便利な列挙型。

これらの型は、QPaintEngine::updateState ()を使用して、QPaintEngine のさまざまな状態の遅延更新をトリガするために、QPainter によって使用されます。

ペイント・エンジンは、すべてのダーティな状態を更新しなければならない。

DirtyFlags 型はQFlags<DirtyFlag> の typedef です。DirtyFlag 値の OR の組み合わせを格納します。

enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures

この enum は、ペイントエンジンが持つ機能や能力を記述するために使用されます。ある機能がエンジンでサポートされていない場合、QPainter は他の手段でその機能をエミュレートする最善の努力を行い、エミュレートされた結果をアルファブレンドしたQImage をエンジンに渡します。エミュレートできない機能もあります:アルファブレンドとポーターダフ。

定数説明
QPaintEngine::AlphaBlend0x00000080エンジンはプリミティブをアルファブレンドできます。
QPaintEngine::Antialiasing0x00000400エンジンは、レンダリングされたプリミティブの外観を向上させるためにアンチエイリアスを使用できます。
QPaintEngine::BlendModes0x00008000ブレンド モードをサポートします。
QPaintEngine::BrushStroke0x00000800エンジンは、塗りつぶしとしてベタ色だけでなくブラシを含むストロークの描画をサポートします(幅 2 の破線グラデーション線など)。
QPaintEngine::ConicalGradientFill0x00000040円錐形のグ ラデ ィ ン グ塗 り に対応 し てい ます。
QPaintEngine::ConstantOpacity0x00001000QPainter::setOpacity() が提供す る 機能をサポー ト し ます。
QPaintEngine::LinearGradientFill0x00000010線形グ ラデ ィ ン グ塗 り に対応 し てい ます。
QPaintEngine::MaskedBrush0x00002000エンジンは、アルファ チャンネルまたはマスクを持つテクスチャを持つブラシをレンダリングできます。
QPaintEngine::ObjectBoundingModeGradients0x00010000座標モー ドQGradient::ObjectBoundingMode を持つグ ラデ ィ ア ン ト をネ イ テ ィ ブにサポー ト し てい ます。それ以外の場合、 QPaintEngine::PatternTransform がサポー ト さ れてい る と き は、 オブジ ェ ク ト のバウンデ ィ ン グ モー ド のグ ラデ ィ エ ン ト は座標モー ドQGradient::LogicalMode のグ ラデ ィ エ ン ト へ変換 さ れ、 座標マ ッ ピ ン グのためのブラシ変換が行われます。
QPaintEngine::PainterPaths0x00000200パ ス をサポー ト し てい ます。
QPaintEngine::PaintOutsidePaintEvent0x20000000ペイント イベント以外でのペイントが可能。
QPaintEngine::PatternBrush0x00000008エ ン ジ ンは、Qt::BrushStyle で指定 さ れてい る ブラシ パターンでブラシをレンダリングできます。
QPaintEngine::PatternTransform0x00000002ブラシ パターンの変換をサポートしています。
QPaintEngine::PerspectiveTransform0x00004000エンジンには、プリミティブに対して透視変換を実行するサポートがあります。
QPaintEngine::PixmapTransform0x00000004回転やシ アーを含む pixmap の変換が可能。
QPaintEngine::PorterDuff0x00000100エンジンは Porter-Duff 操作をサポートしています。
QPaintEngine::PrimitiveTransform0x00000001描画プリミティブの変換がサポートされています。
QPaintEngine::RadialGradientFill0x00000020放射状のグ ラデ ィ ア ン ト 塗 り をサポー ト し てい ます。
QPaintEngine::RasterOpModes0x00020000ビ ッ ト 単位の ラ ス タ 操作をサポー ト し てい ます。
QPaintEngine::AllFeatures0xffffffff上記のすべての機能。この列挙値は通常、ビット マスクとして使用されます。

PaintEngineFeatures 型はQFlags<PaintEngineFeature> の typedef です。これは、PaintEngineFeature 値の OR の組み合わせを格納します。

enum QPaintEngine::PolygonDrawMode

定数説明
QPaintEngine::OddEvenMode0ポリゴンは OddEven 塗りつぶしルールで描画されます。
QPaintEngine::WindingMode1多角形は Winding fill rule を使用して描画されるべきである。
QPaintEngine::ConvexMode2多角形は凸多角形であり、利用可能な場合は特殊なアルゴリズムを使って描画することができる。
QPaintEngine::PolylineMode3多角形の輪郭のみを描画する。

enum QPaintEngine::Type

定数説明
QPaintEngine::X110
QPaintEngine::Windows1
QPaintEngine::MacPrinter4
QPaintEngine::CoreGraphics3macOSのQuartz2D (CoreGraphics)
QPaintEngine::QuickDraw2macOSのQuickDraw
QPaintEngine::QWindowSystem5組み込みLinux用Qt
QPaintEngine::OpenGL6
QPaintEngine::Picture7QPicture フォーマット
QPaintEngine::SVG8Scalable Vector Graphics XMLフォーマット
QPaintEngine::Raster9
QPaintEngine::Direct3D10Windowsのみ、Direct3Dベースのエンジン
QPaintEngine::Pdf11ポータブル・ドキュメント形式
QPaintEngine::OpenVG12
QPaintEngine::User50最初のユーザータイプID
QPaintEngine::MaxUser100最後のユーザー タイプ ID
QPaintEngine::OpenGL213
QPaintEngine::PaintBuffer14
QPaintEngine::Blitter15
QPaintEngine::Direct2D16Windowsのみ、Direct2Dベースエンジン

メンバ関数 ドキュメント

[explicit] QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())

caps で指定されたフィーチャセットを持つペイントエンジンを作成します。

[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 の線のリストを、ペイントエンジンの機能セットに応じて、lineCount drawPath () またはdrawPolygon() の別々の呼び出しに分割します。

[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)

この関数を再実装して、sr の矩形で指定されたpm の部分を、与えられたr に描画します。

[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)

この仮想関数を再実装して、pointspointCount 最初の点によって定義される多角形を、モードmode を使って描画します。

注意: drawPolygon()関数の少なくとも1つを再実装する必要があります。

[virtual] void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)

これはオーバーロードされた関数です。

この仮想関数を再実装して、モードmode を使用して、pointspointCount 第 1 点で定義される多角形を描画します。

注意: drawPolygon()関数の少なくとも1つを再実装する必要があります。

[virtual] void QPaintEngine::drawRects(const QRectF *rects, int rectCount)

バッファ内の最初の矩形rectCount rects を描画する。この関数のデフォルト実装では、ペイントエンジンの機能セットに応じて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)

この関数を再実装して、与えられたrectpixmap を、与えられたp から描画します。pixmap はrect が埋まるまで繰り返し描画されます。

[pure virtual] bool QPaintEngine::end()

この関数を再実装して、現在のペイントデバイスでのペイントを終了します。描画が正常に終了した場合は true を返し、そうでない場合は false を返します。

begin() およびisActive()も参照して ください。

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も参照して ください。

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