QPaintEngine Class
Die Klasse QPaintEngine bietet eine abstrakte Definition, wie QPainter auf einem bestimmten Gerät und einer bestimmten Plattform zeichnet. Mehr...
Kopfzeile: | #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 Malerei-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 |
Detaillierte Beschreibung
Qt bietet mehrere vorgefertigte Implementierungen von QPaintEngine für die verschiedenen von uns unterstützten Maler-Backends. Die primäre Mal-Engine ist die Raster-Paint-Engine, die einen Software-Rasterizer enthält, der den vollen Funktionsumfang auf allen unterstützten Plattformen unterstützt. Dies ist der Standard für das Malen auf QWidget-basierten Klassen in z.B. Windows, X11 und macOS, es ist das Backend für das Malen auf QImage und es wird als Fallback für Paint-Engines verwendet, die eine bestimmte Fähigkeit nicht unterstützen. Darüber hinaus bieten wir QPaintEngine-Implementierungen für OpenGL (zugänglich über QOpenGLWidget) und Drucken (was die Verwendung von QPainter zum Zeichnen auf einem QPrinter Objekt ermöglicht).
Wenn man QPainter verwenden möchte, um auf ein anderes Backend zu zeichnen, muss man QPaintEngine unterklassifizieren und alle seine virtuellen Funktionen neu implementieren. Die QPaintEngine-Implementierung wird dann durch Unterklassifizierung von QPaintDevice und Neuimplementierung der virtuellen Funktion QPaintDevice::paintEngine() verfügbar gemacht.
QPaintEngine wird erstellt und gehört der QPaintDevice, die sie erstellt hat.
Siehe auch QPainter, QPaintDevice::paintEngine(), und Paint System.
Dokumentation der 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 Schrift ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyBackground | 0x0010 | Der Hintergrund ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyBackgroundMode | 0x0020 | Der Hintergrundmodus ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyTransform | 0x0040 | Die Transformation ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyClipRegion | 0x0080 | Der Clipbereich ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyClipPath | 0x0100 | Der Clip-Pfad ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyHints | 0x0200 | Die Render-Hints sind verschmutzt und müssen aktualisiert werden. |
QPaintEngine::DirtyCompositionMode | 0x0400 | Der Kompositionsmodus ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyClipEnabled | 0x0800 | Die Angabe, ob Clipping aktiviert ist oder nicht, ist verschmutzt und muss aktualisiert werden. |
QPaintEngine::DirtyOpacity | 0x1000 | Die konstante Deckkraft hat sich geändert und muss als Teil der Zustandsänderung in QPaintEngine::updateState() aktualisiert werden. |
QPaintEngine::AllDirty | 0xffff | Intern verwendetes Convenience-Enum. |
Diese Typen werden von QPainter verwendet, um mit QPaintEngine::updateState() träge Aktualisierungen der verschiedenen Zustände in QPaintEngine auszulösen.
Eine Paint Engine muss jeden Dirty State aktualisieren.
Der Typ DirtyFlags ist ein Typedef für QFlags<DirtyFlag>. Er speichert eine ODER-Kombination von DirtyFlag-Werten.
enum QPaintEngine::PaintEngineFeature
flags QPaintEngine::PaintEngineFeatures
Diese Aufzählung wird verwendet, um die Eigenschaften oder Fähigkeiten zu beschreiben, die die Paint Engine besitzt. Wenn ein Feature von der Engine nicht unterstützt wird, wird QPainter versuchen, dieses Feature mit anderen Mitteln zu emulieren und ein Alpha-Blended QImage mit den emulierten Ergebnissen an die Engine weiterzugeben. Einige Funktionen können nicht emuliert werden: AlphaBlend und PorterDuff.
Konstante | Wert | Beschreibung |
---|---|---|
QPaintEngine::AlphaBlend | 0x00000080 | Die Engine kann Primitive mit Alpha-Blend überblenden. |
QPaintEngine::Antialiasing | 0x00000400 | Die Engine kann Antialiasing verwenden, um das Aussehen von gerenderten Primitiven zu verbessern. |
QPaintEngine::BlendModes | 0x00008000 | Die Engine unterstützt Überblendungsmodi. |
QPaintEngine::BrushStroke | 0x00000800 | Die Engine unterstützt Striche, die Pinsel als Füllung enthalten, nicht nur Volltonfarben (z. B. eine gestrichelte Verlaufslinie der Breite 2). |
QPaintEngine::ConicalGradientFill | 0x00000040 | Die Engine unterstützt konische Verlaufsfüllungen. |
QPaintEngine::ConstantOpacity | 0x00001000 | Die Engine unterstützt die von QPainter::setOpacity() bereitgestellte Funktion. |
QPaintEngine::LinearGradientFill | 0x00000010 | Die Engine unterstützt lineare Gradientenfüllungen. |
QPaintEngine::MaskedBrush | 0x00002000 | Die Engine ist in der Lage, Pinsel zu rendern, die eine Textur mit einem Alphakanal oder einer Maske haben. |
QPaintEngine::ObjectBoundingModeGradients | 0x00010000 | Die Engine hat native Unterstützung für Farbverläufe mit dem Koordinatenmodus QGradient::ObjectBoundingMode. Andernfalls, wenn QPaintEngine::PatternTransform unterstützt wird, werden Objekt-Bounding-Mode-Gradienten in Gradienten mit Koordinatenmodus QGradient::LogicalMode und eine Pinseltransformation für die Koordinatenzuordnung umgewandelt. |
QPaintEngine::PainterPaths | 0x00000200 | Die Engine hat Pfadunterstützung. |
QPaintEngine::PaintOutsidePaintEvent | 0x20000000 | Die Engine ist in der Lage, außerhalb von Malereignissen zu malen. |
QPaintEngine::PatternBrush | 0x00000008 | Die Engine ist in der Lage, Pinsel mit den in Qt::BrushStyle angegebenen Pinselmustern zu rendern. |
QPaintEngine::PatternTransform | 0x00000002 | Die Engine unterstützt das Transformieren von Pinselmustern. |
QPaintEngine::PerspectiveTransform | 0x00004000 | Die Engine unterstützt die Durchführung perspektivischer Transformationen von 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 das Transformieren von Zeichnungsprimitiven. |
QPaintEngine::RadialGradientFill | 0x00000020 | Die Engine unterstützt radiale Gradientenfüllungen. |
QPaintEngine::RasterOpModes | 0x00020000 | Die Engine unterstützt bitweise Rasteroperationen. |
QPaintEngine::AllFeatures | 0xffffffff | Alle der oben genannten Eigenschaften. Dieser Enum-Wert wird normalerweise 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 soll mit der Füllregel UngeradeGerade gezeichnet werden. |
QPaintEngine::WindingMode | 1 | Das Polygon sollte mit der Füllregel Winding gezeichnet werden. |
QPaintEngine::ConvexMode | 2 | Das Polygon ist ein konvexes Polygon und kann mit speziellen Algorithmen gezeichnet werden, sofern diese verfügbar sind. |
QPaintEngine::PolylineMode | 3 | Es soll 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 von macOS (CoreGraphics) |
QPaintEngine::QuickDraw | 2 | QuickDraw von macOS |
QPaintEngine::QWindowSystem | 5 | Qt für eingebettetes Linux |
QPaintEngine::OpenGL | 6 | |
QPaintEngine::Picture | 7 | QPicture Format |
QPaintEngine::SVG | 8 | Skalierbare Vektorgrafik im XML-Format |
QPaintEngine::Raster | 9 | |
QPaintEngine::Direct3D | 10 | Nur Windows, Direct3D-basierte Engine |
QPaintEngine::Pdf | 11 | Tragbares Dokumentenformat |
QPaintEngine::OpenVG | 12 | |
QPaintEngine::User | 50 | Erste Benutzertyp-ID |
QPaintEngine::MaxUser | 100 | ID des letzten Benutzertyps |
QPaintEngine::OpenGL2 | 13 | |
QPaintEngine::PaintBuffer | 14 | |
QPaintEngine::Blitter | 15 | |
QPaintEngine::Direct2D | 16 | Nur Windows, Direct2D-basierte Engine |
Dokumentation der Mitgliedsfunktionen
[explicit]
QPaintEngine::QPaintEngine(QPaintEngine::PaintEngineFeatures caps = PaintEngineFeatures())
Erzeugt eine Paint-Engine mit dem durch caps angegebenen Featureset.
[virtual noexcept]
QPaintEngine::~QPaintEngine()
Zerstört den Farbmotor.
[pure virtual]
bool QPaintEngine::begin(QPaintDevice *pdev)
Implementieren Sie diese Funktion neu, um Ihre Paint-Engine zu initialisieren, wenn das Malen auf dem Malgerät 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 im Rechteck rect enthalten sein kann.
Die Standardimplementierung ruft drawPolygon() auf.
[virtual]
void QPaintEngine::drawEllipse(const QRect &rect)
Dies ist eine überladene Funktion.
Die Standardimplementierung dieser Funktion ruft die Fließkommaversion dieser Funktion auf
[virtual]
void QPaintEngine::drawImage(const QRectF &rectangle, const QImage &image, const QRectF &sr, Qt::ImageConversionFlags flags = Qt::AutoColor)
Reimplementieren Sie diese Funktion, um den Teil des image, der durch das Rechteck sr angegeben ist, in das angegebene rectangle unter Verwendung der angegebenen Konvertierungsflags flags zu zeichnen, um es in eine Pixmap zu konvertieren.
[virtual]
void QPaintEngine::drawLines(const QLineF *lines, int lineCount)
Die Standardimplementierung teilt die Liste der Zeilen in lines in lineCount separate Aufrufe an drawPath() oder drawPolygon() auf, je nach Funktionsumfang des Malprogramms.
[virtual]
void QPaintEngine::drawLines(const QLine *lines, int lineCount)
Dies ist eine überladene Funktion.
Die Standardimplementierung wandelt die ersten lineCount Zeilen in lines in QLineF um und ruft die Gleitkommaversion dieser Funktion auf.
[virtual]
void QPaintEngine::drawPath(const QPainterPath &path)
Die Standardimplementierung ignoriert die path und unternimmt nichts.
[pure virtual]
void QPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
Reimplementieren Sie diese Funktion, um den Teil des pm zu zeichnen, der durch das Rechteck sr im angegebenen r angegeben ist.
[virtual]
void QPaintEngine::drawPoints(const QPoint *points, int pointCount)
Zeichnet die ersten pointCount Punkte im Puffer points
Die Standardimplementierung konvertiert die ersten pointCount QPoints in points in QPointFs und ruft die Fließkommaversion 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)
Reimplementieren Sie diese virtuelle Funktion, um das Polygon zu zeichnen, das durch die pointCount ersten Punkte 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)
Dies ist eine überladene Funktion.
Reimplementieren Sie diese virtuelle Funktion, um das Polygon zu zeichnen, das durch die pointCount ersten Punkte in points definiert ist, unter Verwendung des Modus mode.
Hinweis: Mindestens eine der drawPolygon()-Funktionen muss neu implementiert werden.
[virtual]
void QPaintEngine::drawRects(const QRectF *rects, int rectCount)
Zeichnet die ersten rectCount Rechtecke in den Puffer rects. Die Standardimplementierung dieser Funktion ruft drawPath() oder drawPolygon() auf, je nach Funktionsumfang des Malprogramms.
[virtual]
void QPaintEngine::drawRects(const QRect *rects, int rectCount)
Dies ist eine überladene Funktion.
Die Standardimplementierung wandelt die ersten rectCount Rechtecke im Puffer rects in ein QRectF um und ruft die Fließkommaversion dieser Funktion auf.
[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 ein QPainterPath um und malt den daraus resultierenden Pfad.
[virtual]
void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, const QPointF &p)
Reimplementieren Sie diese Funktion, um die pixmap in der angegebenen rect zu zeichnen, beginnend mit der angegebenen p. Die Pixmap wird wiederholt gezeichnet, bis die rect gefüllt ist.
[pure virtual]
bool QPaintEngine::end()
Reimplementieren Sie diese Funktion, um das Malen auf dem aktuellen Malgerät zu beenden. Gibt true zurück, wenn das Malen erfolgreich beendet wurde; andernfalls wird false zurückgegeben.
Siehe auch begin() und isActive().
bool QPaintEngine::hasFeature(QPaintEngine::PaintEngineFeatures feature) const
Gibt true
zurück, wenn die Paint-Engine die angegebene feature unterstützt; andernfalls wird false
zurückgegeben.
bool QPaintEngine::isActive() const
Gibt true
zurück, wenn die Paint-Engine aktiv zeichnet; andernfalls wird false
zurückgegeben.
Siehe auch setActive().
QPaintDevice *QPaintEngine::paintDevice() const
Gibt das Gerät zurück, auf dem dieser Motor gerade malt, wenn das Malen 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 Zustand der Paint Engine auf state.
Siehe auch isActive().
[pure virtual]
QPaintEngine::Type QPaintEngine::type() const
Implementieren Sie diese Funktion neu, um die Paint Engine Type zurückzugeben.
[pure virtual]
void QPaintEngine::updateState(const QPaintEngineState &state)
Reimplementieren Sie diese Funktion, um den Zustand einer Paint Engine zu aktualisieren.
Wenn diese Funktion implementiert ist, ist sie für die Überprüfung der aktuellen state der Paint Engine verantwortlich und aktualisiert die Eigenschaften, die geändert wurden. Verwenden Sie die Funktion QPaintEngineState::state(), um herauszufinden, welche Eigenschaften aktualisiert werden müssen, und verwenden Sie dann die entsprechende get function, um die aktuellen Werte für die angegebenen Eigenschaften abzurufen.
Siehe auch 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.