QPainterPath Class
Die Klasse „QPainterPath“ dient als Container für Zeichenvorgänge und ermöglicht so die Erstellung und Wiederverwendung grafischer Formen. Mehr...
| Header: | #include <QPainterPath> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QPainterPath gehört zu den Malklassen.
Hinweis: Alle Funktionen dieser Klasse sind reentrant.
Öffentliche Typen
| class | Element |
| enum | ElementType { MoveToElement, LineToElement, CurveToElement, CurveToDataElement } |
Öffentliche Funktionen
| QPainterPath() | |
| QPainterPath(const QPointF &startPoint) | |
| QPainterPath(const QPainterPath &path) | |
(since 6.10) | QPainterPath(QPainterPath &&other) |
| ~QPainterPath() | |
| void | addEllipse(const QRectF &boundingRectangle) |
| void | addEllipse(const QPointF ¢er, qreal rx, qreal ry) |
| void | addEllipse(qreal x, qreal y, qreal width, qreal height) |
| void | addPath(const QPainterPath &path) |
| void | addPolygon(const QPolygonF &polygon) |
| void | addRect(const QRectF &rectangle) |
| void | addRect(qreal x, qreal y, qreal width, qreal height) |
| void | addRegion(const QRegion ®ion) |
| void | addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
| void | addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize) |
| void | addText(const QPointF &point, const QFont &font, const QString &text) |
| void | addText(qreal x, qreal y, const QFont &font, const QString &text) |
| qreal | angleAtPercent(qreal t) const |
| void | arcMoveTo(const QRectF &rectangle, qreal angle) |
| void | arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle) |
| void | arcTo(const QRectF &rectangle, qreal startAngle, qreal sweepLength) |
| void | arcTo(qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength) |
| QRectF | boundingRect() const |
| int | capacity() const |
| void | clear() |
| void | closeSubpath() |
| void | connectPath(const QPainterPath &path) |
| bool | contains(const QPainterPath &p) const |
| bool | contains(const QPointF &point) const |
| bool | contains(const QRectF &rectangle) const |
| QRectF | controlPointRect() const |
| void | cubicTo(const QPointF &c1, const QPointF &c2, const QPointF &endPoint) |
| void | cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY) |
| QPointF | currentPosition() const |
| QPainterPath::Element | elementAt(int index) const |
| int | elementCount() const |
| Qt::FillRule | fillRule() const |
| QPainterPath | intersected(const QPainterPath &p) const |
| bool | intersects(const QPainterPath &p) const |
| bool | intersects(const QRectF &rectangle) const |
(since 6.10) bool | isCachingEnabled() const |
| bool | isEmpty() const |
| qreal | length() const |
| void | lineTo(const QPointF &endPoint) |
| void | lineTo(qreal x, qreal y) |
| void | moveTo(const QPointF &point) |
| void | moveTo(qreal x, qreal y) |
| qreal | percentAtLength(qreal len) const |
| QPointF | pointAtPercent(qreal t) const |
| void | quadTo(const QPointF &c, const QPointF &endPoint) |
| void | quadTo(qreal cx, qreal cy, qreal endPointX, qreal endPointY) |
| void | reserve(int size) |
(since 6.10) void | setCachingEnabled(bool enabled) |
| void | setElementPositionAt(int index, qreal x, qreal y) |
| void | setFillRule(Qt::FillRule fillRule) |
| QPainterPath | simplified() const |
| qreal | slopeAtPercent(qreal t) const |
| QPainterPath | subtracted(const QPainterPath &p) const |
| void | swap(QPainterPath &other) |
| QPolygonF | toFillPolygon(const QTransform &matrix = QTransform()) const |
| QList<QPolygonF> | toFillPolygons(const QTransform &matrix = QTransform()) const |
| QPainterPath | toReversed() const |
| QList<QPolygonF> | toSubpathPolygons(const QTransform &matrix = QTransform()) const |
| void | translate(qreal dx, qreal dy) |
| void | translate(const QPointF &offset) |
| QPainterPath | translated(qreal dx, qreal dy) const |
| QPainterPath | translated(const QPointF &offset) const |
(since 6.10) QPainterPath | trimmed(qreal fromFraction, qreal toFraction, qreal offset = 0) const |
| QPainterPath | united(const QPainterPath &p) const |
| bool | operator!=(const QPainterPath &path) const |
| QPainterPath | operator&(const QPainterPath &other) const |
| QPainterPath & | operator&=(const QPainterPath &other) |
| QPainterPath | operator+(const QPainterPath &other) const |
| QPainterPath & | operator+=(const QPainterPath &other) |
| QPainterPath | operator-(const QPainterPath &other) const |
| QPainterPath & | operator-=(const QPainterPath &other) |
| QPainterPath & | operator=(QPainterPath &&other) |
| QPainterPath & | operator=(const QPainterPath &path) |
| bool | operator==(const QPainterPath &path) const |
| QPainterPath | operator|(const QPainterPath &other) const |
| QPainterPath & | operator|=(const QPainterPath &other) |
Verwandte Nicht-Mitglieder
| QDataStream & | operator<<(QDataStream &stream, const QPainterPath &path) |
| QDataStream & | operator>>(QDataStream &stream, QPainterPath &path) |
Ausführliche Beschreibung
Ein Malerpfad ist ein Objekt, das aus einer Reihe grafischer Bausteine wie Rechtecken, Ellipsen, Linien und Kurven besteht. Bausteine können zu geschlossenen Teilpfaden verbunden werden, beispielsweise zu einem Rechteck oder einer Ellipse. Ein geschlossener Pfad hat einen Start- und Endpunkt, die zusammenfallen. Oder sie können unabhängig voneinander als offene Teilpfade existieren, wie beispielsweise Linien und Kurven.
Ein `QPainterPath`-Objekt kann zum Füllen, Umreißen und Ausschneiden verwendet werden. Um füllbare Umrisse für einen bestimmten Painter-Pfad zu erzeugen, verwenden Sie die Klasse ` QPainterPathStroker `. Der Hauptvorteil von Painter-Pfaden gegenüber normalen Zeichenoperationen besteht darin, dass komplexe Formen nur einmal erstellt werden müssen; anschließend können sie mehrfach gezeichnet werden, indem lediglich die Funktion ` QPainter::drawPath()` aufgerufen wird.
QPainterPath bietet eine Reihe von Funktionen, mit denen Informationen über den Pfad und seine Elemente abgerufen werden können. Darüber hinaus ist es möglich, die Reihenfolge der Elemente mithilfe der Funktion ` toReversed()` umzukehren. Es gibt außerdem mehrere Funktionen, um dieses Painter-Path-Objekt in eine Polygondarstellung zu konvertieren.
Erstellen eines QPainterPath
Ein `QPainterPath`-Objekt kann als leerer Pfad, mit einem vorgegebenen Startpunkt oder als Kopie eines anderen `QPainterPath`-Objekts erstellt werden. Nach der Erstellung können dem Pfad mithilfe der Funktionen ` lineTo()`, ` arcTo()`, ` cubicTo()` und ` quadTo()` Linien und Kurven hinzugefügt werden. Die Linien und Kurven erstrecken sich von der ` currentPosition()` bis zu der als Argument übergebenen Position.
Die „ currentPosition “ () des QPainterPath-Objekts ist immer die Endposition des zuletzt hinzugefügten Teilpfads (oder der ursprüngliche Startpunkt). Verwenden Sie die Funktion „ moveTo “ (), um die „ currentPosition “ () zu verschieben, ohne eine Komponente hinzuzufügen. Die Funktion „ moveTo “ () startet implizit einen neuen Teilpfad und schließt den vorherigen. Eine weitere Möglichkeit, einen neuen Teilpfad zu beginnen, ist der Aufruf der Funktion „ closeSubpath()“, die den aktuellen Pfad schließt, indem sie eine Linie vom „ currentPosition()“ zurück zur Startposition des Pfads hinzufügt. Beachten Sie, dass der neue Pfad (0, 0) als Start currentPosition() hat.
Die Klasse `QPainterPath` stellt außerdem mehrere Komfortfunktionen bereit, um geschlossene Teilpfade zu einem Painter-Pfad hinzuzufügen: ` addEllipse()`, ` addPath()`, ` addRect()`, ` addRegion()` und ` addText()`. Die Funktion ` addPolygon()` fügt einen nicht geschlossenen Teilpfad hinzu. Tatsächlich sind diese Funktionen allesamt Zusammensetzungen aus den Operationen ` moveTo()`, ` lineTo()` und ` cubicTo()`.
Darüber hinaus kann mit der Funktion ` connectPath()` ein Pfad zum aktuellen Pfad hinzugefügt werden. Beachten Sie jedoch, dass diese Funktion das letzte Element des aktuellen Pfads durch Hinzufügen einer Linie mit dem ersten Element des angegebenen Pfads verbindet.
Im folgenden Codeausschnitt wird gezeigt, wie ein `QPainterPath`-Objekt verwendet werden kann:
![]() | |
Der Painter-Pfad ist bei seiner Erstellung zunächst leer. Zunächst fügen wir ein Rechteck hinzu, das einen geschlossenen Teilpfad darstellt. Dann fügen wir zwei Bézier-Kurven hinzu, die zusammen einen geschlossenen Teilpfad bilden, obwohl sie einzeln betrachtet nicht geschlossen sind. Schließlich zeichnen wir den gesamten Pfad. Der Pfad wird mit der Standard-Füllregel „ Qt::OddEvenFill “ gefüllt. Qt bietet zwei Methoden zum Füllen von Pfaden:
Die Definitionen der Regeln finden Sie in der Dokumentation zu „ Qt::FillRule “. Die aktuell für einen Painter-Pfad festgelegte Füllregel kann mit der Funktion „ fillRule()“ abgerufen und mit der Funktion „ setFillRule()“ geändert werden.
Bögen und Ellipsen
Die Winkelargumente von ` arcTo()`, ` arcMoveTo()`, ` QPainter::drawArc()`, ` QPainter::drawPie()` und ` QPainter::drawChord()` sind Exzentrizitätswinkel. Ein Exzentrizitätswinkel parametrisiert die Ellipse, die in das umschließende Rechteck passt; er misst nicht die Richtung vom Mittelpunkt dieses Rechtecks zum resultierenden Punkt. Im Allgemeinen fallen beide nur dann zusammen, wenn das umschließende Rechteck quadratisch ist. Bei einem Rechteck mit den Maßen 400 × 100 ergibt beispielsweise ein Winkel von 45 Grad einen Punkt, der vom Mittelpunkt aus gesehen etwa 14 Grad über der Horizontalen liegt.
Um stattdessen einen Punkt in einer bestimmten Richtung vom Mittelpunkt aus zu platzieren, berechnen Sie diesen Punkt selbst und übergeben Sie ihn an ` moveTo()` oder ` lineTo()`. Alternativ können Sie diese Funktionen weiterhin verwenden und die Richtung umrechnen: Bei einem Begrenzungsrechteck mit den gegebenen Koordinaten ` width ` und ` height` entspricht die Richtung ` theta` (in Radianten) dem Exzentrizitätswinkel ` qRadiansToDegrees(qAtan2(width * qSin(theta), height * qCos(theta)))`.
Da ein Malerpfad nur Linien und Bézier-Segmente speichert, approximiert Qt Bögen und Ellipsen mit kubischen Bézier-Kurven, anstatt sie trigonometrisch zu berechnen. Bei einem Kreis weichen die Punkte durch diese Approximation um weniger als 0,1 % des Radius von ihren tatsächlichen Positionen ab. Code, der einen Punkt aus ` arcMoveTo()` mit einem Punkt vergleicht, der mit ` qSin()` und ` qCos()` berechnet wurde, muss daher eine Toleranz berücksichtigen, anstatt auf Gleichheit zu prüfen.
Informationen zu QPainterPath
Die Klasse `QPainterPath` stellt eine Reihe von Funktionen bereit, die Informationen über den Pfad und seine Elemente zurückgeben.
Die Funktion ` currentPosition()` gibt den Endpunkt des zuletzt hinzugefügten Teilpfads (oder den ursprünglichen Startpunkt) zurück. Mit der Funktion ` elementAt()` lassen sich die verschiedenen Teilpfadelemente abrufen, die Anzahl der Elemente kann mit der Funktion ` elementCount()` ermittelt werden, und die Funktion ` isEmpty()` gibt an, ob dieses `QPainterPath`-Objekt überhaupt Elemente enthält.
Die Funktion ` controlPointRect()` gibt das Rechteck zurück, das alle Punkte und Kontrollpunkte dieses Pfades enthält. Diese Funktion ist deutlich schneller zu berechnen als die exakte Funktion ` boundingRect()`, die das umschließende Rechteck dieses QPainterPath-Objekts mit Gleitkommagenauigkeit zurückgibt.
Schließlich stellt QPainterPath die Funktion ` contains()` zur Verfügung, mit der festgestellt werden kann, ob sich ein bestimmter Punkt oder ein Rechteck innerhalb des Pfades befindet, sowie die Funktion ` intersects()`, die ermittelt, ob sich Punkte innerhalb eines bestimmten Rechtecks ebenfalls innerhalb dieses Pfades befinden.
QPainterPath-Konvertierung
Aus Kompatibilitätsgründen kann es erforderlich sein, die Darstellung eines Painter-Pfads zu vereinfachen: QPainterPath stellt die Funktionen ` toFillPolygon()`, ` toFillPolygons()` und ` toSubpathPolygons()` zur Verfügung, die den Painter-Pfad in ein Polygon umwandeln. Die Funktion ` toFillPolygon()` gibt den Painter-Pfad als ein einzelnes Polygon zurück, während die beiden letztgenannten Funktionen eine Liste von Polygonen zurückgeben.
Die Funktionen ` toFillPolygons()` und ` toSubpathPolygons()` werden bereitgestellt, da es in der Regel schneller ist, mehrere kleine Polygone zu zeichnen als ein großes Polygon, auch wenn die Gesamtzahl der gezeichneten Punkte gleich ist. Der Unterschied zwischen den beiden liegt in der Anzahl der zurückgegebenen Polygone: Die Funktion „ toSubpathPolygons()“ erstellt für jeden Teilpfad ein Polygon, unabhängig davon, ob sich Teilpfade überschneiden (d. h. ob sich die umschließenden Rechtecke überlappen), während die Funktion „ toFillPolygons()“ bei überlappenden Teilpfaden nur ein einziges Polygon erstellt.
Die Funktionen „ toFillPolygon “() und „ toFillPolygons “() wandeln zunächst alle Teilpfade in Polygone um und verwenden dann eine „Rewinding“-Technik, um sicherzustellen, dass sich überlappende Teilpfade mit der richtigen Füllregel ausgefüllt werden können. Beachten Sie, dass durch das „Rewinding“ zusätzliche Linien in das Polygon eingefügt werden, sodass der Umriss des Füllpolygons nicht mit dem Umriss des Pfades übereinstimmt.
Beispiele
Qt stellt das Beispiel „Painter Paths“ und das Beispiel „Vector Deformation“ zur Verfügung, die sich im Beispielverzeichnis von Qt befinden.
Das Beispiel „Painter Paths“ zeigt, wie Painter-Pfade zum Erstellen komplexer Formen für die Darstellung verwendet werden können, und ermöglicht es dem Benutzer, mit Füllungen und Konturen zu experimentieren. Das Beispiel „Vector Deformation“ zeigt, wie man mit QPainterPath Text zeichnet.
Siehe auch „ QPainterPathStroker“ , „ QPainter “, „ QRegion “ und „Beispiel ‚Painter Paths‘“.
Dokumentation zu Mitgliedstypen
enum QPainterPath::ElementType
Diese Aufzählung beschreibt die Arten von Elementen, die zur Verbindung von Knoten in Teilpfaden verwendet werden.
Beachten Sie, dass Elemente, die mithilfe der Hilfsfunktionen „ addEllipse()“, „ addPath()“, „ addPolygon()“, „ addRect()“, „ addRegion()“ und „ addText()“ als geschlossene Teilpfade hinzugefügt werden, tatsächlich mithilfe der Funktionen „ moveTo()“, „ lineTo()“ und „ cubicTo()“ als Sammlung separater Elemente zum Pfad hinzugefügt werden.
| Konstante | Wert | Beschreibung |
|---|---|---|
QPainterPath::MoveToElement | 0 | Ein neuer Teilpfad. Siehe auch „ moveTo()“. |
QPainterPath::LineToElement | 1 | Eine Linie. Siehe auch „ lineTo()“. |
QPainterPath::CurveToElement | 2 | Eine Kurve. Siehe auch cubicTo() und quadTo(). |
QPainterPath::CurveToDataElement | 3 | Die zusätzlichen Daten, die zur Beschreibung einer Kurve in einem „CurveToElement“-Element erforderlich sind. |
Siehe auch elementAt() und elementCount().
Dokumentation der Member-Funktionen
[noexcept] QPainterPath::QPainterPath()
Erstellt ein leeres QPainterPath-Objekt.
[explicit] QPainterPath::QPainterPath(const QPointF &startPoint)
Erstellt ein QPainterPath-Objekt, dessen aktuelle Position dem angegebenen „ startPoint “ entspricht.
QPainterPath::QPainterPath(const QPainterPath &path)
Erstellt ein QPainterPath-Objekt, das eine Kopie des angegebenen path ist.
Siehe auch ` operator=()`.
[noexcept, since 6.10] QPainterPath::QPainterPath(QPainterPath &&other)
Erstellt mithilfe von „Move“ einen neuen Malerpfad aus other.
Das Objekt „ other “, aus dem die Konstruktion erfolgt, wird in den Zustand der Standardkonstruktion versetzt.
Diese Funktion wurde in Qt 6.10 eingeführt.
[noexcept] QPainterPath::~QPainterPath()
Löscht dieses „ QPainterPath “-Objekt.
void QPainterPath::addEllipse(const QRectF &boundingRectangle)
Erzeugt eine Ellipse innerhalb des angegebenen Bereichs „ boundingRectangle “ und fügt sie dem Malpfad als geschlossenen Teilpfad hinzu.
Die Ellipse besteht aus einer im Uhrzeigersinn verlaufenden Kurve, die bei null Grad (der 3-Uhr-Position) beginnt und endet. Die Kurve ist eine kubische Bézier-Näherung der Ellipse und keine exakte Darstellung derselben, wie in Arcs and Ellipses beschrieben.
![]() | |
Siehe auch arcTo(), QPainter::drawEllipse() und Composing a QPainterPath.
void QPainterPath::addEllipse(const QPointF ¢er, qreal rx, qreal ry)
Erzeugt eine Ellipse mit den Koordinaten center und den Radien rx und ry und fügt sie dem Malpfad als geschlossenen Teilpfad hinzu.
Dies ist eine überladene Funktion.
void QPainterPath::addEllipse(qreal x, qreal y, qreal width, qreal height)
Erzeugt eine Ellipse innerhalb des Begrenzungsrechtecks, das durch die obere linke Ecke bei (x, y), width und height definiert ist, und fügt sie dem Malpfad als geschlossenen Teilpfad hinzu.
Dies ist eine überladene Funktion.
void QPainterPath::addPath(const QPainterPath &path)
Fügt den angegebenen path als geschlossenen Teilpfad zu diesem Pfad hinzu.
Siehe auch „ connectPath()“ und „ Composing a QPainterPath “.
void QPainterPath::addPolygon(const QPolygonF &polygon)
Fügt das angegebene „ polygon “ als (nicht geschlossenen) Teilpfad zum Pfad hinzu.
Beachten Sie, dass die aktuelle Position nach dem Hinzufügen des Polygons dem letzten Punkt in ` polygon` entspricht. Um eine Linie zurück zum ersten Punkt zu zeichnen, verwenden Sie die Funktion ` closeSubpath()`.
![]() | |
Siehe auch „ lineTo()“ und „ Composing a QPainterPath “.
void QPainterPath::addRect(const QRectF &rectangle)
Fügt den angegebenen „ rectangle “ diesem Pfad als geschlossenen Teilpfad hinzu.
Der „ rectangle “ wird als im Uhrzeigersinn verlaufende Liniengruppe hinzugefügt. Die aktuelle Position des Zeichenpfads nach dem Hinzufügen des „ rectangle “ befindet sich in der oberen linken Ecke des Rechtecks.
![]() | |
Siehe auch addRegion(), lineTo() und Composing a QPainterPath.
void QPainterPath::addRect(qreal x, qreal y, qreal width, qreal height)
Fügt an der Position (x, y) ein Rechteck mit den angegebenen Werten width und height als geschlossenen Teilpfad hinzu.
Dies ist eine überladene Funktion.
void QPainterPath::addRegion(const QRegion ®ion)
Fügt die angegebene Region „ region “ zum Pfad hinzu, indem jedes Rechteck in der Region als separater geschlossener Teilpfad hinzugefügt wird.
Siehe auch „ addRect()“ und „ Composing a QPainterPath “.
void QPainterPath::addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Fügt dem Pfad das angegebene Rechteck „ rect “ mit abgerundeten Ecken hinzu.
Die Argumente „ xRadius “ und „ yRadius “ geben die Radien der Ellipsen an, die die Ecken des abgerundeten Rechtecks definieren. Wenn „ mode “ auf „ Qt::RelativeSize “ gesetzt ist, werden „ xRadius “ und „ yRadius “ in Prozent der halben Breite bzw. Höhe des Rechtecks angegeben und sollten im Bereich von 0,0 bis 100,0 liegen.
Siehe auch addRect().
void QPainterPath::addRoundedRect(qreal x, qreal y, qreal w, qreal h, qreal xRadius, qreal yRadius, Qt::SizeMode mode = Qt::AbsoluteSize)
Fügt dem Pfad das angegebene Rechteck x, y, w, h mit abgerundeten Ecken hinzu.
Dies ist eine überladene Funktion.
void QPainterPath::addText(const QPointF &point, const QFont &font, const QString &text)
Fügt den angegebenen Text „ text “ diesem Pfad als eine Reihe geschlossener Teilpfade hinzu, die aus den übergebenen „ font “ erstellt werden. Die Teilpfade werden so positioniert, dass das linke Ende der Grundlinie des Textes auf dem angegebenen „ point “ liegt.
Bei einigen Schriftarten kann es zu überlappenden Teilpfaden kommen, sodass für eine korrekte Darstellung die Füllregel „ Qt::WindingFill “ erforderlich ist.
![]() | |
Siehe auch QPainter::drawText(), Composing a QPainterPath und setFillRule().
void QPainterPath::addText(qreal x, qreal y, const QFont &font, const QString &text)
Fügt den angegebenen „ text “ diesem Pfad als eine Menge geschlossener Teilpfade hinzu, die aus dem angegebenen „ font “ erstellt werden. Die Teilpfade werden so positioniert, dass das linke Ende der Grundlinie des Textes an dem durch (x, y) angegebenen Punkt liegt.
Dies ist eine überladene Funktion.
qreal QPainterPath::angleAtPercent(qreal t) const
Gibt den Winkel der Tangente am Pfad am Prozent t zurück. Das Argument t muss zwischen 0 und 1 liegen.
Positive Werte für die Winkel bedeuten eine Drehung gegen den Uhrzeigersinn, während negative Werte eine Drehung im Uhrzeigersinn bedeuten. Null Grad entspricht der 3-Uhr-Position.
Beachten Sie, dass – ähnlich wie bei den anderen Prozent-Methoden – die Prozentangabe in Bezug auf die Länge nicht linear ist, wenn der Pfad Kurven enthält. Bei Vorhandensein von Kurven wird das Prozent-Argument auf den Parameter t der Bézier-Gleichungen abgebildet.
void QPainterPath::arcMoveTo(const QRectF &rectangle, qreal angle)
Erzeugt einen Zug, der auf dem Bogen liegt, der die angegebene Koordinate „ rectangle “ bei „ angle “ einnimmt.
Winkel werden in Grad angegeben. Bögen im Uhrzeigersinn können mit negativen Winkeln angegeben werden. Wenn „ rectangle “ kein Quadrat ist, ist „ angle “ ein exzentrischer Winkel und misst nicht die Richtung vom Mittelpunkt des Rechtecks aus, wie unter Arcs and Ellipses beschrieben.
Siehe auch moveTo(), arcTo() und Arcs and Ellipses.
void QPainterPath::arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle)
Erzeugt einen Zug, der auf dem Bogen liegt, der die Koordinaten QRectF(x, y, width, height) am Punkt angle einnimmt.
Dies ist eine überladene Funktion.
void QPainterPath::arcTo(const QRectF &rectangle, qreal startAngle, qreal sweepLength)
Erzeugt einen Bogen, der den angegebenen Bereich rectangle einnimmt, beginnend am angegebenen startAngle und sich um sweepLength Grad gegen den Uhrzeigersinn erstreckend.
Winkel werden in Grad angegeben. Bögen im Uhrzeigersinn können durch negative Winkel angegeben werden. Wenn rectangle kein Rechteck ist, handelt es sich um exzentrische Winkel, die nicht die Richtung vom Mittelpunkt des Rechtecks aus messen, wie unter Arcs and Ellipses beschrieben.
Beachten Sie, dass diese Funktion den Startpunkt des Bogens mit der aktuellen Position verbindet, sofern diese noch nicht miteinander verbunden sind. Nach dem Hinzufügen des Bogens ist die aktuelle Position der letzte Punkt des Bogens. Um eine Linie zurück zum ersten Punkt zu zeichnen, verwenden Sie die Funktion „ closeSubpath()“.
![]() | |
Siehe auch arcMoveTo(), addEllipse(), QPainter::drawArc(), QPainter::drawPie() und Composing a QPainterPath.
void QPainterPath::arcTo(qreal x, qreal y, qreal width, qreal height, qreal startAngle, qreal sweepLength)
Erzeugt einen Bogen, der das Rechteck QRectF(x, y, width, height) einnimmt, beginnend bei der angegebenen startAngle und sich sweepLength Grad gegen den Uhrzeigersinn erstreckend.
Dies ist eine überladene Funktion.
QRectF QPainterPath::boundingRect() const
Gibt das Begrenzungsrechteck dieses Malpfads als Rechteck mit Gleitkommagenauigkeit zurück.
Siehe auch „ controlPointRect()“.
int QPainterPath::capacity() const
Gibt die Anzahl der Elemente zurück, die von der Funktion „ QPainterPath “ zugewiesen wurden.
Siehe auch „ clear()“ und „ reserve()“.
void QPainterPath::clear()
Löscht die gespeicherten Pfadelemente.
Dadurch kann der Pfad zuvor zugewiesene Speicherbereiche wiederverwenden.
Siehe auch reserve() und capacity().
void QPainterPath::closeSubpath()
Schließt den aktuellen Teilpfad, indem eine Linie zum Anfang des Teilpfads gezeichnet wird, wodurch automatisch ein neuer Pfad begonnen wird. Der aktuelle Punkt des neuen Pfads ist (0, 0).
Wenn der Teilpfad keine Elemente enthält, führt diese Funktion keine Aktion aus.
Siehe auch moveTo() und Composing a QPainterPath.
void QPainterPath::connectPath(const QPainterPath &path)
Verbindet den angegebenen Pfad „ path “ mit diesem Pfad, indem eine Linie vom letzten Element dieses Pfads zum ersten Element des angegebenen Pfads hinzugefügt wird.
Siehe auch „ addPath()“ und „ Composing a QPainterPath “.
bool QPainterPath::contains(const QPainterPath &p) const
Gibt „ true “ zurück, wenn der angegebene Pfad „ p “ im aktuellen Pfad enthalten ist. Gibt „ false “ zurück, wenn sich Kanten des aktuellen Pfads und von „ p “ schneiden.
Bei Mengenoperationen auf Pfaden werden die Pfade als Flächen behandelt. Nicht geschlossene Pfade werden implizit als geschlossen behandelt.
Siehe auch „ intersects()“.
bool QPainterPath::contains(const QPointF &point) const
Gibt „ true “ zurück, wenn die angegebene „ point “ im Pfad enthalten ist, andernfalls „ false “.
Siehe auch intersects().
bool QPainterPath::contains(const QRectF &rectangle) const
Gibt „ true “ zurück, wenn die angegebene „ rectangle “ im Pfad enthalten ist, andernfalls „ false “.
QRectF QPainterPath::controlPointRect() const
Gibt das Rechteck zurück, das alle Punkte und Kontrollpunkte dieses Pfades enthält.
Diese Funktion ist deutlich schneller zu berechnen als die exakte Funktion ` boundingRect()` und das zurückgegebene Rechteck ist immer eine Obermenge des von ` boundingRect()` zurückgegebenen Rechtecks.
Siehe auch ` boundingRect()`.
void QPainterPath::cubicTo(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
Fügt eine kubische Bézier-Kurve zwischen der aktuellen Position und der angegebenen Koordinate ` endPoint ` hinzu, wobei die durch ` c1` und ` c2` angegebenen Kontrollpunkte verwendet werden.
Nachdem die Kurve hinzugefügt wurde, wird die aktuelle Position auf den Endpunkt der Kurve aktualisiert.
![]() | |
Siehe auch quadTo() und Composing a QPainterPath.
void QPainterPath::cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY)
Fügt eine kubische Bézier-Kurve zwischen der aktuellen Position und dem Endpunkt (endPointX, endPointY) ein, deren Kontrollpunkte durch (c1X, c1Y) und (c2X, c2Y) angegeben werden.
Dies ist eine überladene Funktion.
QPointF QPainterPath::currentPosition() const
Gibt die aktuelle Position des Pfades zurück.
QPainterPath::Element QPainterPath::elementAt(int index) const
Gibt das Element an der angegebenen Position „ index “ im Painter-Pfad zurück.
Siehe auch „ ElementType“ , „ elementCount()“ und „ isEmpty()“.
int QPainterPath::elementCount() const
Gibt die Anzahl der Pfadelemente im Painter-Pfad zurück.
Siehe auch „ ElementType“ , „ elementAt()“ und „ isEmpty()“.
Qt::FillRule QPainterPath::fillRule() const
Gibt die aktuell festgelegte Füllregel des Malpfads zurück.
Siehe auch ` setFillRule()`.
QPainterPath QPainterPath::intersected(const QPainterPath &p) const
Gibt einen Pfad zurück, der die Schnittmenge zwischen dem Füllbereich dieses Pfads und dem Füllbereich von p darstellt. Bézier-Kurven können aufgrund numerischer Instabilitäten bei der Berechnung von Schnittpunkten von Bézier-Kurven zu Liniensegmenten vereinfacht werden.
bool QPainterPath::intersects(const QPainterPath &p) const
Gibt „ true “ zurück, wenn sich der aktuelle Pfad an irgendeiner Stelle mit dem angegebenen Pfad „ p “ schneidet. Gibt außerdem „ true “ zurück, wenn der aktuelle Pfad einen Teil von „ p “ enthält oder von diesem Teil enthalten ist.
Bei Mengenoperationen auf Pfaden werden die Pfade als Flächen behandelt. Nicht geschlossene Pfade werden implizit als geschlossen behandelt.
Siehe auch contains().
bool QPainterPath::intersects(const QRectF &rectangle) const
Gibt „ true “ zurück, wenn ein beliebiger Punkt im angegebenen „ rectangle “ den Pfad schneidet; andernfalls wird „ false “ zurückgegeben.
Eine Schnittstelle liegt vor, wenn eine der Linien, aus denen das Rechteck besteht, einen Teil des Pfades kreuzt oder wenn sich ein Teil des Rechtecks mit einem vom Pfad umschlossenen Bereich überschneidet. Diese Funktion berücksichtigt die aktuelle „ fillRule “, um zu bestimmen, was als innerhalb des Pfades liegend gilt.
Siehe auch „ contains()“.
[since 6.10] bool QPainterPath::isCachingEnabled() const
Gibt „true“ zurück, wenn das Caching aktiviert ist; andernfalls „false“.
Diese Funktion wurde in Qt 6.10 eingeführt.
Siehe auch ` setCachingEnabled()`.
bool QPainterPath::isEmpty() const
Gibt „ true “ zurück, wenn dieser Pfad entweder keine Elemente enthält oder wenn das einzige Element ein „ MoveToElement “ ist; andernfalls wird „ false “ zurückgegeben.
Siehe auch elementCount().
qreal QPainterPath::length() const
Gibt die Länge des aktuellen Pfads zurück.
void QPainterPath::lineTo(const QPointF &endPoint)
Fügt eine gerade Linie von der aktuellen Position zum angegebenen Koordinatenpaar ` endPoint` hinzu. Nachdem die Linie gezeichnet wurde, wird die aktuelle Position auf den Endpunkt der Linie aktualisiert.
Siehe auch addPolygon(), addRect() und Composing a QPainterPath.
void QPainterPath::lineTo(qreal x, qreal y)
Zeichnet eine Linie von der aktuellen Position zu dem Punkt (x, y).
Dies ist eine überladene Funktion.
void QPainterPath::moveTo(const QPointF &point)
Verschiebt den aktuellen Punkt an die angegebene Koordinaten point, wobei implizit ein neuer Teilpfad begonnen und der vorherige geschlossen wird.
Siehe auch „ closeSubpath()“ und „ Composing a QPainterPath “.
void QPainterPath::moveTo(qreal x, qreal y)
Verschiebt die aktuelle Position zu (x, y) und beginnt einen neuen Teilpfad, wobei der vorherige Pfad implizit geschlossen wird.
Dies ist eine überladene Funktion.
qreal QPainterPath::percentAtLength(qreal len) const
Gibt den prozentualen Anteil der gesamten Strecke bei der angegebenen Länge zurück len.
Beachten Sie, dass – ähnlich wie bei anderen Prozent-Methoden – die Prozentangabe in Bezug auf die Länge nicht linear ist, wenn der Pfad Kurven enthält. Bei Vorhandensein von Kurven wird das Prozent-Argument auf den Parameter t der Bézier-Gleichungen abgebildet.
QPointF QPainterPath::pointAtPercent(qreal t) const
Gibt den Punkt am prozentualen t en des aktuellen Pfades zurück. Das Argument „ t “ muss zwischen 0 und 1 liegen.
Beachten Sie, dass – ähnlich wie bei anderen Prozent-Methoden – die Prozentangabe in Bezug auf die Länge nicht linear ist, wenn der Pfad Kurven enthält. Sind Kurven vorhanden, wird das Prozentargument auf den Parameter t der Bézier-Gleichungen abgebildet.
void QPainterPath::quadTo(const QPointF &c, const QPointF &endPoint)
Fügt eine quadratische Bézier-Kurve zwischen der aktuellen Position und dem angegebenen Koordinatenpaar ` endPoint ` ein, wobei der Kontrollpunkt durch ` c` festgelegt wird.
Nachdem die Kurve hinzugefügt wurde, wird der aktuelle Punkt auf den Endpunkt der Kurve aktualisiert.
Siehe auch cubicTo() und Composing a QPainterPath.
void QPainterPath::quadTo(qreal cx, qreal cy, qreal endPointX, qreal endPointY)
Fügt eine quadratische Bézier-Kurve zwischen dem aktuellen Punkt und dem Endpunkt (endPointX, endPointY) ein, wobei der Kontrollpunkt durch (cx, cy) angegeben wird.
Dies ist eine überladene Funktion.
void QPainterPath::reserve(int size)
Reserviert eine bestimmte Anzahl von Elementen im internen Speicher von QPainterPath.
Versucht, Speicherplatz für mindestens size Elemente zuzuweisen.
Siehe auch clear(), capacity() und QList::reserve().
[since 6.10] void QPainterPath::setCachingEnabled(bool enabled)
Aktiviert oder deaktiviert das Längen-Caching entsprechend dem Wert von „ enabled “.
Das Aktivieren des Caching beschleunigt wiederholte Aufrufe von Member-Funktionen, die Pfadlängen und Prozentwerte beinhalten, wie z. B. ` length()`, ` percentAtLength()`, ` pointAtPercent()` usw., geht jedoch mit einem zusätzlichen Speicherbedarf für die Speicherung von Zwischenberechnungen einher. Standardmäßig ist es deaktiviert.
Durch das Deaktivieren des Caching wird der gesamte zugewiesene Cache-Speicher freigegeben.
Diese Funktion wurde in Qt 6.10 eingeführt.
Siehe auch isCachingEnabled(), length(), percentAtLength(), pointAtPercent() und trimmed().
void QPainterPath::setElementPositionAt(int index, qreal x, qreal y)
Setzt die x- und y-Koordinaten des Elements am Index „ index “ auf „ x “ bzw. „ y “.
void QPainterPath::setFillRule(Qt::FillRule fillRule)
Legt die Füllregel für den Malpfad auf die angegebene „ fillRule “ fest. Qt bietet zwei Methoden zum Füllen von Pfaden:
| Qt::OddEvenFill (Standard) | Qt::WindingFill |
|---|---|
![]() | ![]() |
Siehe auch ` fillRule()`.
QPainterPath QPainterPath::simplified() const
Gibt eine vereinfachte Version dieses Pfades zurück. Dabei werden alle sich schneidenden Teilpfade zusammengeführt und ein Pfad zurückgegeben, der keine sich schneidenden Kanten enthält. Auch aufeinanderfolgende parallele Linien werden zusammengeführt. Der vereinfachte Pfad verwendet stets die Standard-Füllregel „ Qt::OddEvenFill “. Bézier-Kurven können aufgrund numerischer Instabilitäten bei der Berechnung von Schnittpunkten von Bézier-Kurven zu Liniensegmenten vereinfacht werden.
qreal QPainterPath::slopeAtPercent(qreal t) const
Gibt die Steigung des Pfades am Prozent t zurück. Das Argument „ t “ muss zwischen 0 und 1 liegen.
Beachten Sie, dass ähnlich wie bei anderen Prozent-Methoden die Prozentangabe in Bezug auf die Länge nicht linear ist, wenn der Pfad Kurven enthält. Bei Vorhandensein von Kurven wird das Prozentargument auf den Parameter t der Bézier-Gleichungen abgebildet.
QPainterPath QPainterPath::subtracted(const QPainterPath &p) const
Gibt einen Pfad zurück, der der Füllfläche von p abzüglich der Füllfläche dieses Pfads entspricht.
Bei Mengenoperationen auf Pfaden werden die Pfade als Flächen behandelt. Nicht geschlossene Pfade werden implizit als geschlossen behandelt. Bézier-Kurven können aufgrund numerischer Instabilitäten bei der Berechnung von Schnittpunkten von Bézier-Kurven zu Liniensegmenten vereinfacht werden.
[noexcept] void QPainterPath::swap(QPainterPath &other)
Tauscht diesen Painer-Pfad gegen „ other “ aus. Dieser Vorgang ist sehr schnell und schlägt niemals fehl.
QPolygonF QPainterPath::toFillPolygon(const QTransform &matrix = QTransform()) const
Wandelt den Pfad mithilfe der Funktion „ QTransform “ matrix in ein Polygon um und gibt das Polygon zurück.
Das Polygon wird erstellt, indem zunächst alle Teilpfade in Polygone umgewandelt werden und anschließend mithilfe einer „Rewinding“-Technik sichergestellt wird, dass sich überlappende Teilpfade gemäß der korrekten Füllregel gefüllt werden können.
Beachten Sie, dass beim „Rewinding“ zusätzliche Linien in das Polygon eingefügt werden, sodass der Umriss des Füllpolygons nicht mit dem Umriss des Pfades übereinstimmt.
Siehe auch toSubpathPolygons(), toFillPolygons() und QPainterPath Conversion.
QList<QPolygonF> QPainterPath::toFillPolygons(const QTransform &matrix = QTransform()) const
Wandelt den Pfad mithilfe der Funktion „ QTransform “ matrix in eine Liste von Polygonen um und gibt diese Liste zurück.
Die Funktion unterscheidet sich von der Funktion „ toFillPolygon()“ dadurch, dass sie mehrere Polygone erstellt. Sie wird bereitgestellt, da das Zeichnen mehrerer kleiner Polygone in der Regel schneller ist als das Zeichnen eines großen Polygons, auch wenn die Gesamtzahl der gezeichneten Punkte gleich ist.
Die Funktion `toFillPolygons()` unterscheidet sich von der Funktion ` toSubpathPolygons()` dadurch, dass sie nur für Teilpfade, deren Begrenzungsrechtecke sich überlappen, ein Polygon erstellt.
Wie die Funktion „ toFillPolygon()“ verwendet auch diese Funktion eine Rückspultechnik, um sicherzustellen, dass sich überschneidende Teilpfade mit der richtigen Füllregel gefüllt werden können. Beachten Sie, dass durch das Zurückspulen zusätzliche Linien in die Polygone eingefügt werden, sodass der Umriss des Füllpolygons nicht mit dem Umriss des Pfades übereinstimmt.
Siehe auch „ toSubpathPolygons()“, „ toFillPolygon()“ und „ QPainterPath Conversion “.
QPainterPath QPainterPath::toReversed() const
Erzeugt eine umgekehrte Kopie des Pfads und gibt diese zurück.
Es ist die Reihenfolge der Elemente, die umgekehrt wird: Wenn ein „ QPainterPath “ durch Aufruf der Funktionen „ moveTo()“, „ lineTo()“ und „ cubicTo()“ in der angegebenen Reihenfolge zusammengesetzt wird, wird die umgekehrte Kopie durch Aufruf der Funktionen „ cubicTo()“, „ lineTo()“ und „ moveTo()“ zusammengesetzt.
QList<QPolygonF> QPainterPath::toSubpathPolygons(const QTransform &matrix = QTransform()) const
Wandelt den Pfad mithilfe der Funktion „ QTransform “ ( matrix) in eine Liste von Polygonen um und gibt diese Liste zurück.
Diese Funktion erstellt für jeden Teilpfad ein Polygon, unabhängig davon, ob sich Teilpfade überschneiden (d. h. ob sich die umschließenden Rechtecke überlappen). Um sicherzustellen, dass solche überlappenden Teilpfade korrekt ausgefüllt werden, verwenden Sie stattdessen die Funktion „ toFillPolygons()“.
Siehe auch toFillPolygons(), toFillPolygon() und QPainterPath Conversion.
void QPainterPath::translate(qreal dx, qreal dy)
Verschiebt alle Elemente im Pfad um (dx, dy).
Siehe auch translated().
void QPainterPath::translate(const QPointF &offset)
Verschiebt alle Elemente im Pfad um den angegebenen Wert „ offset “.
Dies ist eine überladene Funktion.
Siehe auch ` translated()`.
QPainterPath QPainterPath::translated(qreal dx, qreal dy) const
Gibt eine Kopie des Pfads zurück, der mit (dx, dy) übersetzt wurde.
Siehe auch ` translate()`.
QPainterPath QPainterPath::translated(const QPointF &offset) const
Gibt eine Kopie des Pfads zurück, der durch die angegebene Funktion ` offset` übersetzt wurde.
Dies ist eine überladene Funktion.
Siehe auch ` translate()`.
[since 6.10] QPainterPath QPainterPath::trimmed(qreal fromFraction, qreal toFraction, qreal offset = 0) const
Gibt den Abschnitt des Pfades zwischen den Längenanteilen fromFraction und toFraction zurück. Der effektive Bereich der Anteile reicht von 0, was den Startpunkt des Pfades bezeichnet, bis 1, was dessen Endpunkt bezeichnet. Die Anteile verhalten sich linear zur Pfadlänge, im Gegensatz zu den prozentualen t-Werten.
Der Wert von offset wird zu den Bruchwerten addiert. Wenn dies zu einem Über- oder Unterlauf des Bereichs [0, 1] führt, werden die Werte umgebrochen, ebenso wie der resultierende Pfad. Der effektive Bereich des Offsets liegt zwischen -1 und 1.
Wiederholte Aufrufe dieser Funktion können durch {Aktivieren des Caching}{setCachingEnabled()} optimiert werden.
Diese Funktion wurde in Qt 6.10 eingeführt.
Siehe auch length(), percentAtLength() und setCachingEnabled().
QPainterPath QPainterPath::united(const QPainterPath &p) const
Gibt einen Pfad zurück, der die Vereinigung aus dem Füllbereich dieses Pfads und dem Füllbereich von p darstellt.
Bei Verknüpfungsoperationen mit Pfaden werden die Pfade als Flächen behandelt. Nicht geschlossene Pfade werden implizit als geschlossen behandelt. Bézier-Kurven können aufgrund numerischer Instabilitäten bei der Berechnung von Schnittpunkten von Bézier-Kurven zu Liniensegmenten vereinfacht werden.
Siehe auch „ intersected()“ und „ subtracted()“.
bool QPainterPath::operator!=(const QPainterPath &path) const
Gibt „ true “ zurück, wenn sich dieser Painter-Pfad vom angegebenen „ path “ unterscheidet.
Beachten Sie, dass der Vergleich von Pfaden einen elementweisen Vergleich erfordern kann, was bei komplexen Pfaden langsam sein kann.
Siehe auch ` operator==()`.
QPainterPath QPainterPath::operator&(const QPainterPath &other) const
Gibt die Schnittmenge dieses Pfads und des Pfads „ other “ zurück.
Siehe auch „ intersected()“, „ operator&=()“, „ united()“ und „ operator|()“.
QPainterPath &QPainterPath::operator&=(const QPainterPath &other)
Schneidet diesen Pfad mit other und gibt eine Referenz auf diesen Pfad zurück.
Siehe auch „ intersected()“, „ operator&()“ und „ operator|=()“.
QPainterPath QPainterPath::operator+(const QPainterPath &other) const
Gibt die Vereinigung dieses Pfads und des Pfads „ other “ zurück. Diese Funktion entspricht dem Operator |().
Siehe auch „ united()“, „ operator+=()“ und „ operator-()“.
QPainterPath &QPainterPath::operator+=(const QPainterPath &other)
Vereint diesen Pfad mit other und gibt eine Referenz auf diesen Pfad zurück. Dies entspricht dem Operator |=().
Siehe auch united(), operator+() und operator-=().
QPainterPath QPainterPath::operator-(const QPainterPath &other) const
Subtrahiert den Pfad „ other “ von einer Kopie dieses Pfads und gibt die Kopie zurück.
Siehe auch „ subtracted()“, „ operator-=()“ und „ operator+()“.
QPainterPath &QPainterPath::operator-=(const QPainterPath &other)
Subtrahiert „ other “ von diesem Pfad und gibt eine Referenz auf diesen Pfad zurück.
Siehe auch „ subtracted()“, „ operator-()“ und „ operator+=()“.
[noexcept] QPainterPath &QPainterPath::operator=(QPainterPath &&other)
Weist „ other “ dieser „ QPainterPath “-Instanz zu.
QPainterPath &QPainterPath::operator=(const QPainterPath &path)
Weist diesem Painter-Pfad die angegebene „ path “ zu.
Siehe auch QPainterPath().
bool QPainterPath::operator==(const QPainterPath &path) const
Gibt „ true “ zurück, wenn dieser „painterpath“ mit dem angegebenen „ path “ übereinstimmt.
Beachten Sie, dass der Vergleich von Pfaden einen elementweisen Vergleich beinhalten kann, was bei komplexen Pfaden langsam sein kann.
Siehe auch ` operator!=()`.
QPainterPath QPainterPath::operator|(const QPainterPath &other) const
Gibt die Vereinigung dieses Pfades und des Pfades „ other “ zurück.
Siehe auch „ united()“, „ operator|=()“, „ intersected()“ und „ operator&()“.
QPainterPath &QPainterPath::operator|=(const QPainterPath &other)
Verknüpft diesen Pfad mit other und gibt eine Referenz auf diesen Pfad zurück.
Siehe auch united(), operator|() und operator&=().
Verwandte Nicht-Mitglieder
QDataStream &operator<<(QDataStream &stream, const QPainterPath &path)
Schreibt den angegebenen Painter path in den angegebenen stream und gibt eine Referenz auf den stream zurück.
Siehe auch „Serialisierung vonQt-Datentypen“.
QDataStream &operator>>(QDataStream &stream, QPainterPath &path)
Liest einen Malerpfad aus der angegebenen Datei „ stream “ in die angegebene Datei „ path “ ein und gibt eine Referenz auf die Datei „ stream “ zurück.
Siehe auch „Serialisierung vonQt-Datentypen“.
© 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.










