QPaintEngine Class
QPaintEngineクラスは、QPainter 、特定のプラットフォーム上の特定のデバイスに描画する方法の抽象定義を提供します。詳細...
Header: | #include <QPaintEngine> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
- 継承メンバを含む全メンバ一覧
- QPaintEngine は、ペイントクラスの一部です。
パブリック型
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 で指定されたフィーチャセットを持つペイントエンジンを作成します。
[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)
この仮想関数を再実装して、points のpointCount 最初の点によって定義される多角形を、モードmode を使って描画します。
注意: drawPolygon()関数の少なくとも1つを再実装する必要があります。
[virtual]
void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
これはオーバーロードされた関数です。
この仮想関数を再実装して、モードmode を使用して、points のpointCount 第 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)
この関数を再実装して、与えられたrect のpixmap を、与えられた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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。