QPaintEngine Class
Die Klasse „QPaintEngine“ liefert eine abstrakte Definition dafür, wie „ QPainter “ auf einer bestimmten Plattform auf einem bestimmten Gerät zeichnet. Mehr...
| Header: | #include <QPaintEngine> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QPaintEngine ist Teil der Mal-Klassen.
Öffentliche Typen
| 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 } |
Öffentliche Funktionen
| 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 |
Ausführliche Beschreibung
Qt stellt mehrere vorgefertigte Implementierungen von QPaintEngine für die verschiedenen von uns unterstützten Mal-Backends bereit. Die primär bereitgestellte Mal-Engine ist die Raster-Mal-Engine, die einen Software-Rasterisierer enthält, der den vollständigen Funktionsumfang auf allen unterstützten Plattformen bietet. Dies ist die Standardeinstellung für das Zeichnen in Klassen auf Basis von „ QWidget “ – beispielsweise unter Windows, X11 und macOS –, dient als Backend für das Zeichnen in „ QImage “ und wird als Fallback für Zeichen-Engines verwendet, die eine bestimmte Funktion nicht unterstützen. Darüber hinaus stellen wir QPaintEngine-Implementierungen für OpenGL (zugänglich über ` QOpenGLWidget`) und für den Druck (wodurch die Verwendung von ` QPainter ` zum Zeichnen auf einem ` QPrinter `-Objekt möglich ist) bereit.
Wenn man „ QPainter “ verwenden möchte, um auf ein anderes Backend zu zeichnen, muss man eine Unterklasse von „QPaintEngine“ erstellen und alle ihre virtuellen Funktionen neu implementieren. Die „QPaintEngine“-Implementierung wird dann durch die Erstellung einer Unterklasse von „ QPaintDevice “ und die Neuimplementierung der virtuellen Funktion „ QPaintDevice::paintEngine()“ verfügbar gemacht.
QPaintEngine wird von der QPaintDevice erstellt, die sie angelegt hat, und steht in deren Besitz.
Siehe auch „ QPainter“ , „ QPaintDevice::paintEngine()“ und „Paint System“.
Dokumentation zu Mitgliedstypen
enum QPaintEngine::DirtyFlag
flags QPaintEngine::DirtyFlags
| Konstante | Wert | Beschreibung |
|---|---|---|
QPaintEngine::DirtyPen | 0x0001 | Der Stift ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyBrush | 0x0002 | Der Pinsel ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyBrushOrigin | 0x0004 | Der Pinselursprung ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyFont | 0x0008 | Die Schriftart ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyBackground | 0x0010 | Der Hintergrund ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyBackgroundMode | 0x0020 | Der Hintergrundmodus ist veraltet und muss aktualisiert werden. |
QPaintEngine::DirtyTransform | 0x0040 | Die Transformation ist veraltet und muss aktualisiert werden. |
QPaintEngine::DirtyClipRegion | 0x0080 | Der Ausschnittbereich ist veraltet und muss aktualisiert werden. |
QPaintEngine::DirtyClipPath | 0x0100 | Der Ausschnittpfad ist veraltet und muss aktualisiert werden. |
QPaintEngine::DirtyHints | 0x0200 | Die Render-Hinweise sind veraltet und müssen aktualisiert werden. |
QPaintEngine::DirtyCompositionMode | 0x0400 | Der Kompositionsmodus ist ungültig und muss aktualisiert werden. |
QPaintEngine::DirtyClipEnabled | 0x0800 | Ob das Clipping aktiviert ist oder nicht, ist ungültig und muss aktualisiert werden. |
QPaintEngine::DirtyOpacity | 0x1000 | Die konstante Deckkraft hat sich geändert und muss im Rahmen der Statusänderung in ` QPaintEngine::updateState()` aktualisiert werden. |
QPaintEngine::AllDirty | 0xffff | Intern verwendete Hilfs-Enumeration. |
Diese Typen werden von ` QPainter ` verwendet, um mithilfe von ` QPaintEngine::updateState()` verzögerte Aktualisierungen der verschiedenen Zustände in der ` QPaintEngine ` auszulösen.
Eine Render-Engine muss jeden geänderten Zustand aktualisieren.
Der Typ „DirtyFlags“ ist ein „typedef“ für „QFlags<DirtyFlag>“. Er speichert eine OR-Kombination von „DirtyFlag“-Werten.
enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures
Diese Enumeration dient zur Beschreibung der Funktionen oder Fähigkeiten der Paint-Engine. Wenn eine Funktion von der Engine nicht unterstützt wird, versucht „ QPainter “, diese Funktion nach bestem Vermögen auf andere Weise zu emulieren und ein alpha-gemischtes „ QImage “ mit den emulierten Ergebnissen an die Engine weiterzuleiten. Einige Funktionen lassen sich nicht emulieren: „AlphaBlend“ und „PorterDuff“.
| Konstante | Wert | Beschreibung |
|---|---|---|
QPaintEngine::AlphaBlend | 0x00000080 | Die Engine kann Primitive mit Alpha-Blending rendern. |
QPaintEngine::Antialiasing | 0x00000400 | Die Engine kann Antialiasing verwenden, um das Erscheinungsbild gerenderter Primitive zu verbessern. |
QPaintEngine::BlendModes | 0x00008000 | Die Engine unterstützt Mischmodi. |
QPaintEngine::BrushStroke | 0x00000800 | Die Engine unterstützt das Zeichnen von Strichen, die Pinsel als Füllungen enthalten, nicht nur Volltonfarben (z. B. eine gestrichelte Verlaufslinie mit einer Breite von 2). |
QPaintEngine::ConicalGradientFill | 0x00000040 | Die Engine unterstützt konische Farbverlaufsfüllungen. |
QPaintEngine::ConstantOpacity | 0x00001000 | Die Engine unterstützt die von ` QPainter::setOpacity()` bereitgestellte Funktion. |
QPaintEngine::LinearGradientFill | 0x00000010 | Die Engine unterstützt lineare Farbverlaufsfüllungen. |
QPaintEngine::MaskedBrush | 0x00002000 | Die Engine ist in der Lage, Pinsel darzustellen, die eine Textur mit einem Alphakanal oder einer Maske besitzen. |
QPaintEngine::ObjectBoundingModeGradients | 0x00010000 | Die Engine bietet native Unterstützung für Farbverläufe im Koordinatenmodus „ QGradient::ObjectBoundingMode “. Andernfalls, sofern QPaintEngine::PatternTransform unterstützt wird, werden Farbverläufe im Objektbegrenzungsmodus in Farbverläufe im Koordinatenmodus „ QGradient::LogicalMode “ umgewandelt, wobei eine Pinseltransformation für die Koordinatenabbildung verwendet wird. |
QPaintEngine::PainterPaths | 0x00000200 | Die Engine unterstützt Pfade. |
QPaintEngine::PaintOutsidePaintEvent | 0x20000000 | Die Engine ist in der Lage, außerhalb von Malereignissen zu zeichnen. |
QPaintEngine::PatternBrush | 0x00000008 | Die Engine kann Pinsel mit den in „ Qt::BrushStyle “ angegebenen Pinselmustern rendern. |
QPaintEngine::PatternTransform | 0x00000002 | Die Engine unterstützt die Transformation von Pinselmustern. |
QPaintEngine::PerspectiveTransform | 0x00004000 | Die Engine unterstützt die Durchführung von perspektivischen Transformationen an Primitiven. |
QPaintEngine::PixmapTransform | 0x00000004 | Die Engine kann Pixmaps transformieren, einschließlich Rotation und Scherung. |
QPaintEngine::PorterDuff | 0x00000100 | Die Engine unterstützt Porter-Duff-Operationen |
QPaintEngine::PrimitiveTransform | 0x00000001 | Die Engine unterstützt die Transformation von Zeichenprimitiven. |
QPaintEngine::RadialGradientFill | 0x00000020 | Die Engine unterstützt radiale Farbverlaufsfüllungen. |
QPaintEngine::RasterOpModes | 0x00020000 | Die Engine unterstützt bitweise Rasteroperationen. |
QPaintEngine::AllFeatures | 0xffffffff | Alle oben genannten Funktionen. Dieser Enum-Wert wird üblicherweise als Bitmaske verwendet. |
Der Typ „PaintEngineFeatures“ ist ein „typedef“ für „QFlags<PaintEngineFeature>“. Er speichert eine ODER-Kombination von „PaintEngineFeature“-Werten.
enum QPaintEngine::PolygonDrawMode
| Konstante | Wert | Beschreibung |
|---|---|---|
QPaintEngine::OddEvenMode | 0 | Das Polygon sollte mit der Füllregel „OddEven“ gezeichnet werden. |
QPaintEngine::WindingMode | 1 | Das Polygon soll unter Verwendung der Füllregel „Winding“ gezeichnet werden. |
QPaintEngine::ConvexMode | 2 | Das Polygon ist ein konvexes Polygon und kann, sofern verfügbar, mit speziellen Algorithmen gezeichnet werden. |
QPaintEngine::PolylineMode | 3 | Es sollte nur der Umriss des Polygons gezeichnet werden. |
enum QPaintEngine::Type
| Konstante | Wert | Beschreibung |
|---|---|---|
QPaintEngine::X11 | 0 | |
QPaintEngine::Windows | 1 | |
QPaintEngine::MacPrinter | 4 | |
QPaintEngine::CoreGraphics | 3 | Quartz2D (CoreGraphics) von macOS |
QPaintEngine::QuickDraw | 2 | QuickDraw von macOS |
QPaintEngine::QWindowSystem | 5 | Qt für Embedded Linux |
QPaintEngine::OpenGL | 6 | |
QPaintEngine::Picture | 7 | QPicture Format |
QPaintEngine::SVG | 8 | Scalable Vector Graphics im XML-Format |
QPaintEngine::Raster | 9 | |
QPaintEngine::Direct3D | 10 | Nur Windows, Direct3D-basierte Engine |
QPaintEngine::Pdf | 11 | Portable Document Format |
QPaintEngine::OpenVG | 12 | |
QPaintEngine::User | 50 | ID des ersten Benutzertyps |
QPaintEngine::MaxUser | 100 | Letzte Benutzer-Typ-ID |
QPaintEngine::OpenGL2 | 13 | |
QPaintEngine::PaintBuffer | 14 | |
QPaintEngine::Blitter | 15 | |
QPaintEngine::Direct2D | 16 | Nur Windows, Direct2D-basierte Engine |
Dokumentation zu den Member-Funktionen
[explicit] QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
Erstellt eine Paint-Engine mit den unter caps angegebenen Funktionen.
[virtual noexcept] QPaintEngine::~QPaintEngine()
Zerstört die Farb-Engine.
[pure virtual] bool QPaintEngine::begin(QPaintDevice *pdev)
Implementieren Sie diese Funktion neu, um Ihre Zeichen-Engine zu initialisieren, wenn der Zeichenvorgang auf dem Zeichen-Device pdev beginnen soll. Geben Sie „true“ zurück, wenn die Initialisierung erfolgreich war; andernfalls geben Sie „false“ zurück.
Siehe auch end() und isActive().
[virtual] void QPaintEngine::drawEllipse(const QRectF &rect)
Implementieren Sie diese Funktion neu, um die größte Ellipse zu zeichnen, die in das Rechteck rect passt.
Die Standardimplementierung ruft ` drawPolygon()` auf.
[virtual] void QPaintEngine::drawEllipse(const QRect &rect)
Die Standardimplementierung dieser Funktion ruft die Gleitkomma-Version dieser Funktion auf
Dies ist eine überladene Funktion.
[virtual] void QPaintEngine::drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
Implementieren Sie diese Funktion neu, um den durch das Rechteck „ sr “ angegebenen Teil von „ image “ im angegebenen „ rectangle “ unter Verwendung der angegebenen Konvertierungsflags „ flags “ zu zeichnen und ihn in eine Pixmap zu konvertieren.
[virtual] void QPaintEngine::drawLines(const QLineF *lines, int lineCount)
Die Standardimplementierung unterteilt die Liste der Zeilen in „ lines “ in „ lineCount “ separate Aufrufe von „ drawPath()“ oder „ drawPolygon()“, je nach Funktionsumfang der Zeichen-Engine.
[virtual] void QPaintEngine::drawLines(const QLine *lines, int lineCount)
Die Standardimplementierung konvertiert die ersten lineCount Zeilen in lines in einen QLineF und ruft die Gleitkomma-Version dieser Funktion auf.
Dies ist eine überladene Funktion.
[virtual] void QPaintEngine::drawPath(const QPainterPath &path)
Die Standardimplementierung ignoriert die Methode „ path “ und führt keine Aktion aus.
[pure virtual] void QPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
Implementieren Sie diese Funktion neu, um den Teil der „ pm “, der durch das Rechteck „ sr “ angegeben wird, in der angegebenen „ r “ zu zeichnen.
[virtual] void QPaintEngine::drawPoints(const QPoint *points, int pointCount)
Zeichnet die ersten pointCount -Punkte in den Puffer points
Die Standardimplementierung konvertiert die ersten pointCount QPoints in points in QPointFs und ruft die Gleitkomma-Version von drawPoints auf.
[virtual] void QPaintEngine::drawPoints(const QPointF *points, int pointCount)
Zeichnet die ersten pointCount Punkte in den Puffer points
[virtual] void QPaintEngine::drawPolygon(const QPointF *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
Implementieren Sie diese virtuelle Funktion neu, um das Polygon zu zeichnen, das durch die ersten Punkte von „ pointCount “ in „ points “ definiert ist, unter Verwendung des Modus „ mode “.
Hinweis: Mindestens eine der drawPolygon()-Funktionen muss neu implementiert werden.
[virtual] void QPaintEngine::drawPolygon(const QPoint *points, int pointCount, QPaintEngine::PolygonDrawMode mode)
Implementieren Sie diese virtuelle Funktion neu, um das Polygon zu zeichnen, das durch die ersten Punkte von ` pointCount ` in ` points` definiert ist, unter Verwendung des Modus ` mode`.
Hinweis: Mindestens eine der drawPolygon()-Funktionen muss neu implementiert werden.
Dies ist eine überladene Funktion.
[virtual] void QPaintEngine::drawRects(const QRectF *rects, int rectCount)
Zeichnet die ersten „ rectCount “-Rechtecke in den Puffer „ rects “. Die Standardimplementierung dieser Funktion ruft je nach Funktionsumfang der Zeichen-Engine entweder „ drawPath()“ oder „ drawPolygon()“ auf.
[virtual] void QPaintEngine::drawRects(const QRect *rects, int rectCount)
Die Standardimplementierung wandelt die ersten rectCount Rechtecke im Puffer rects in ein QRectF um und ruft die Gleitkomma-Version dieser Funktion auf.
Dies ist eine überladene Funktion.
[virtual] void QPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
Diese Funktion zeichnet das Textelement „ textItem “ an der Position „ p “. Die Standardimplementierung dieser Funktion wandelt den Text in einen „ QPainterPath “ um und zeichnet den resultierenden Pfad.
[virtual] void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
Implementieren Sie diese Funktion neu, um die „ pixmap “ in der angegebenen „ rect “ zu zeichnen, beginnend bei der angegebenen „ p “. Die Pixmap wird so lange wiederholt gezeichnet, bis die „ rect “ gefüllt ist.
[pure virtual] bool QPaintEngine::end()
Implementieren Sie diese Funktion neu, um das Zeichnen auf dem aktuellen Zeichen-Device abzuschließen. Geben Sie „true“ zurück, wenn das Zeichnen erfolgreich abgeschlossen wurde; andernfalls geben Sie „false“ zurück.
Siehe auch begin() und isActive().
bool QPaintEngine::hasFeature(QPaintEngine::PaintEngineFeatures feature) const
Gibt „ true “ zurück, wenn die Paint-Engine das angegebene „ feature “ unterstützt; andernfalls wird „ false “ zurückgegeben.
bool QPaintEngine::isActive() const
Gibt „ true “ zurück, wenn die Zeichen-Engine gerade zeichnet; andernfalls wird „ false “ zurückgegeben.
Siehe auch setActive().
QPaintDevice *QPaintEngine::paintDevice() const
Gibt das Gerät zurück, auf dem diese Engine gerade zeichnet, sofern das Zeichnen aktiv ist; andernfalls wird „ nullptr “ zurückgegeben.
QPainter *QPaintEngine::painter() const
Gibt den „Painter“ der Paint-Engine zurück.
void QPaintEngine::setActive(bool state)
Setzt den aktiven Status der Paint-Engine auf „ state “.
Siehe auch isActive().
[pure virtual] QPaintEngine::Type QPaintEngine::type() const
Implementieren Sie diese Funktion neu, damit sie den Paint-Engine- Type zurückgibt.
[pure virtual] void QPaintEngine::updateState(const QPaintEngineState &state)
Implementieren Sie diese Funktion neu, um den Zustand einer Paint-Engine zu aktualisieren.
Nach der Implementierung ist diese Funktion dafür zuständig, den aktuellen Zustand der Paint-Engine ( state ) zu überprüfen und die geänderten Eigenschaften zu aktualisieren. Verwenden Sie die Funktion „ QPaintEngineState::state()“, um herauszufinden, welche Eigenschaften aktualisiert werden müssen, und nutzen Sie anschließend die entsprechende Funktion „ get function “, um die aktuellen Werte für die angegebenen Eigenschaften abzurufen.
Siehe auch „ QPaintEngineState “.
© 2026 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.