QPainterPath Class
Die Klasse QPainterPath stellt einen Container für Maloperationen bereit, mit dem grafische Formen konstruiert und wiederverwendet werden können. Mehr...
Kopfzeile: | #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 ist Teil von Painting Classes und Implicitly Shared Classes.
Öffentliche Typen
class | Element |
enum | ElementType { MoveToElement, LineToElement, CurveToElement, CurveToDataElement } |
Öffentliche Funktionen
QPainterPath() | |
QPainterPath(const QPointF &startPoint) | |
QPainterPath(const QPainterPath &path) | |
~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 |
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) |
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 |
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-Members
QDataStream & | operator<<(QDataStream &stream, const QPainterPath &path) |
QDataStream & | operator>>(QDataStream &stream, QPainterPath &path) |
Detaillierte Beschreibung
Ein Malerpfad ist ein Objekt, das aus einer Reihe von grafischen Bausteinen wie Rechtecken, Ellipsen, Linien und Kurven besteht. Bausteine können zu geschlossenen Teilpfaden verbunden werden, zum Beispiel als Rechteck oder Ellipse. Ein geschlossener Pfad hat übereinstimmende Start- und Endpunkte. Sie können aber auch unabhängig voneinander als nicht geschlossene Teilpfade existieren, z. B. als Linien und Kurven.
Ein QPainterPath-Objekt kann zum Füllen, Umreißen und Ausschneiden verwendet werden. Um füllbare Umrisse für einen bestimmten Malerpfad zu erzeugen, verwenden Sie die Klasse QPainterPathStroker. Der Hauptvorteil von Malerpfaden gegenüber normalen Zeichenoperationen besteht darin, dass komplexe Formen nur einmal erstellt werden müssen; anschließend können sie viele Male gezeichnet werden, indem nur die Funktion QPainter::drawPath() aufgerufen wird.
QPainterPath bietet eine Sammlung von Funktionen, die verwendet werden können, um Informationen über den Pfad und seine Elemente zu erhalten. Darüber hinaus ist es möglich, die Reihenfolge der Elemente mit der Funktion toReversed() umzukehren. Es gibt auch mehrere Funktionen zur Umwandlung dieses Malerpfadobjekts in eine Polygondarstellung.
Zusammensetzen eines QPainterPath
Ein QPainterPath-Objekt kann als leerer Pfad, mit einem bestimmten Startpunkt oder als Kopie eines anderen QPainterPath-Objekts erstellt werden. Sobald es erstellt ist, können Linien und Kurven mit den Funktionen lineTo(), arcTo(), cubicTo() und quadTo() zum Pfad hinzugefügt werden. Die Linien und Kurven erstrecken sich von currentPosition() bis zu der als Argument übergebenen Position.
Die currentPosition() des QPainterPath-Objekts ist immer die Endposition des zuletzt hinzugefügten Unterpfades (oder der Anfangsstartpunkt). Verwenden Sie die Funktion moveTo(), um die currentPosition() zu verschieben, ohne eine Komponente hinzuzufügen. Die Funktion moveTo() startet implizit einen neuen Unterpfad und schließt den vorherigen. Eine andere Möglichkeit, einen neuen Unterpfad zu beginnen, ist der Aufruf der Funktion closeSubpath(), die den aktuellen Pfad schließt, indem sie eine Zeile von currentPosition() zurück zur Startposition des Pfades hinzufügt. Beachten Sie, dass der neue Pfad (0, 0) als seine Anfangsposition currentPosition() haben wird.
Die Klasse QPainterPath bietet auch mehrere Komfortfunktionen zum Hinzufügen von geschlossenen Unterpfaden zu einem Malerpfad: addEllipse(), addPath(), addRect(), addRegion() und addText(). Die Funktion addPolygon() fügt einen nicht-geschlossenen Unterpfad hinzu. Diese Funktionen sind eigentlich allesamt Sammlungen von moveTo(), lineTo() und cubicTo() Operationen.
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 Pfades mit dem ersten Element des angegebenen Pfades verbindet, indem sie eine Linie hinzufügt.
Das folgende Codeschnipsel zeigt, wie ein QPainterPath-Objekt verwendet werden kann:
![]() | QPainterPath path; path.addRect(20, 20, 60, 60); path.moveTo(0, 0); path.cubicTo(99, 0, 50, 50, 99, 99); path.cubicTo(0, 99, 50, 50, 0, 0); QPainter painter(this); painter.fillRect(0, 0, 100, 100, Qt::white); painter.setPen(QPen(QColor(79, 106, 25), 1, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin)); painter.setBrush(QColor(122, 163, 39)); painter.drawPath(path); |
Der Malerpfad ist anfangs leer, wenn er konstruiert wird. Wir fügen zunächst ein Rechteck hinzu, das ein geschlossener Unterpfad ist. Dann fügen wir zwei Bezier-Kurven hinzu, die zusammen einen geschlossenen Unterpfad bilden, obwohl sie einzeln nicht geschlossen sind. Schließlich wird der gesamte Pfad gezeichnet. Der Pfad wird mit der Standardfüllregel Qt::OddEvenFill gefüllt. Qt bietet zwei Methoden zum Füllen von Pfaden:
Siehe die Qt::FillRule Dokumentation für die Definition der Regeln. Die aktuell eingestellte Füllregel eines Malerpfades kann mit der Funktion fillRule() abgefragt und mit der Funktion setFillRule() geändert werden.
QPainterPath Informationen
Die Klasse QPainterPath bietet eine Sammlung von Funktionen, die Informationen über den Pfad und seine Elemente zurückgeben.
Die Funktion currentPosition() gibt den Endpunkt des zuletzt hinzugefügten Unterpfades (oder den anfänglichen Startpunkt) zurück. Die Funktion elementAt() kann verwendet werden, um die verschiedenen Unterpfadelemente abzurufen, die Anzahl der Elemente kann mit der Funktion elementCount() abgerufen werden, und die Funktion isEmpty() gibt an, ob dieses QPainterPath-Objekt überhaupt irgendwelche Elemente enthält.
Die Funktion controlPointRect() gibt das Rechteck zurück, das alle Punkte und Kontrollpunkte in diesem Pfad enthält. Diese Funktion ist wesentlich schneller zu berechnen als die exakte boundingRect(), die das begrenzende Rechteck dieses Malerpfades mit Fließkommagenauigkeit zurückgibt.
Schließlich bietet QPainterPath die Funktion contains(), mit der festgestellt werden kann, ob ein bestimmter Punkt oder ein bestimmtes Rechteck innerhalb des Pfades liegt, und die Funktion intersects(), mit der festgestellt wird, ob einer der Punkte innerhalb eines bestimmten Rechtecks auch innerhalb dieses Pfades liegt.
QPainterPath Konvertierung
Aus Kompatibilitätsgründen kann es erforderlich sein, die Darstellung eines Malerpfades zu vereinfachen: QPainterPath bietet die Funktionen toFillPolygon(), toFillPolygons() und toSubpathPolygons(), die den Malerpfad in ein Polygon umwandeln. Die Funktion toFillPolygon() gibt den Malerpfad 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, weil 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 Funktionen ist die Anzahl der Polygone, die sie zurückgeben: Die Funktion toSubpathPolygons() erzeugt ein Polygon für jeden Teilpfad, unabhängig von sich überschneidenden Teilpfaden (d.h. überlappenden begrenzenden Rechtecken), während die Funktion toFillPolygons() nur ein Polygon für sich überschneidende Teilpfade erzeugt.
Die Funktionen toFillPolygon() und toFillPolygons() konvertieren zunächst alle Teilpfade in Polygone und verwenden dann eine Rückspultechnik, um sicherzustellen, dass sich überlappende Teilpfade mit der richtigen Füllregel gefüllt werden können. Beachten Sie, dass beim Zurückspulen zusätzliche Linien in das Polygon eingefügt werden, so dass der Umriss des Füllpolygons nicht mit dem Umriss des Pfades übereinstimmt.
Beispiele
Qt stellt das Painter Paths Beispiel und das Vector Deformation Beispiel zur Verfügung, die sich im Beispielverzeichnis von Qt befinden.
Das Painter Paths Example zeigt, wie Painter Paths verwendet werden können, um komplexe Formen für das Rendering zu erstellen und lässt den Benutzer mit dem Füllen und Streichen experimentieren. Das Vector Deformation Example zeigt, wie man QPainterPath zum Zeichnen von Text verwendet.
Siehe auch QPainterPathStroker, QPainter, QRegion und Painter Paths Example.
Dokumentation der Mitgliedstypen
enum QPainterPath::ElementType
Diese Aufzählung beschreibt die Arten von Elementen, die zur Verbindung von Scheitelpunkten in Unterpfaden verwendet werden.
Beachten Sie, dass Elemente, die als geschlossene Unterpfade mit den Komfortfunktionen addEllipse(), addPath(), addPolygon(), addRect(), addRegion() und addText() hinzugefügt werden, tatsächlich als eine Sammlung von separaten Elementen mit den Funktionen moveTo(), lineTo() und cubicTo() zum Pfad hinzugefügt werden.
Konstante | Wert | Beschreibung |
---|---|---|
QPainterPath::MoveToElement | 0 | Ein neuer Unterpfad. Siehe auch moveTo(). |
QPainterPath::LineToElement | 1 | Eine Zeile. 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 Mitgliedsfunktionen
[noexcept]
QPainterPath::QPainterPath()
Konstruiert ein leeres QPainterPath-Objekt.
[explicit]
QPainterPath::QPainterPath(const QPointF &startPoint)
Erzeugt ein QPainterPath-Objekt mit der angegebenen startPoint als aktuelle Position.
QPainterPath::QPainterPath(const QPainterPath &path)
Erzeugt ein QPainterPath-Objekt, das eine Kopie des angegebenen path ist.
Siehe auch operator=().
[noexcept]
QPainterPath::~QPainterPath()
Zerstört dieses QPainterPath Objekt.
void QPainterPath::addEllipse(const QRectF &boundingRectangle)
Erzeugt eine Ellipse innerhalb der angegebenen boundingRectangle und fügt sie dem Malerpfad als geschlossenen Unterpfad hinzu.
Die Ellipse besteht aus einer Kurve im Uhrzeigersinn, die bei Null Grad (der 3-Uhr-Position) beginnt und endet.
![]() | QLinearGradient myGradient; QPen myPen; QRectF boundingRectangle; QPainterPath myPath; myPath.addEllipse(boundingRectangle); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
Siehe auch arcTo(), QPainter::drawEllipse(), und Composing a QPainterPath.
void QPainterPath::addEllipse(const QPointF ¢er, qreal rx, qreal ry)
Dies ist eine überladene Funktion.
Erzeugt eine Ellipse an der Position center mit den Radien rx und ry und fügt sie dem Malerpfad als geschlossenen Unterpfad hinzu.
void QPainterPath::addEllipse(qreal x, qreal y, qreal width, qreal height)
Dies ist eine überladene Funktion.
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 Malerpfad als geschlossenen Unterpfad hinzu.
void QPainterPath::addPath(const QPainterPath &path)
Fügt den angegebenen path zu diesem Pfad als geschlossenen Unterpfad hinzu.
Siehe auch connectPath() und Composing a QPainterPath.
void QPainterPath::addPolygon(const QPolygonF &polygon)
Fügt das angegebene polygon dem Pfad als (nicht geschlossener) Unterpfad hinzu.
Beachten Sie, dass die aktuelle Position, nachdem das Polygon hinzugefügt wurde, der letzte Punkt in polygon ist. Um eine Linie zurück zum ersten Punkt zu zeichnen, verwenden Sie die Funktion closeSubpath().
![]() | QLinearGradient myGradient; QPen myPen; QPolygonF myPolygon; QPainterPath myPath; myPath.addPolygon(myPolygon); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
Siehe auch lineTo() und Composing a QPainterPath.
void QPainterPath::addRect(const QRectF &rectangle)
Fügt den angegebenen rectangle zu diesem Pfad als geschlossenen Unterpfad hinzu.
Die rectangle wird als eine Reihe von Linien im Uhrzeigersinn hinzugefügt. Die aktuelle Position des Malerpfads nach dem Hinzufügen von rectangle ist die linke obere Ecke des Rechtecks.
![]() | QLinearGradient myGradient; QPen myPen; QRectF myRectangle; QPainterPath myPath; myPath.addRect(myRectangle); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
Siehe auch addRegion(), lineTo(), und Composing a QPainterPath.
void QPainterPath::addRect(qreal x, qreal y, qreal width, qreal height)
Dies ist eine überladene Funktion.
Fügt ein Rechteck an der Position (x, y) mit den angegebenen width und height als geschlossenen Unterpfad hinzu.
void QPainterPath::addRegion(const QRegion ®ion)
Fügt die angegebene region zum Pfad hinzu, indem jedes Rechteck in der Region als separater geschlossener Unterpfad 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 Qt::RelativeSize ist, werden xRadius und yRadius in Prozent der halben Rechteckbreite bzw. -höhe 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)
Dies ist eine überladene Funktion.
Fügt das angegebene Rechteck x, y, w, h mit abgerundeten Ecken zum Pfad hinzu.
void QPainterPath::addText(const QPointF &point, const QFont &font, const QString &text)
Fügt den angegebenen text zu diesem Pfad als eine Reihe von geschlossenen Unterpfaden hinzu, die aus dem angegebenen font erstellt werden. Die Unterpfade werden so positioniert, dass das linke Ende der Grundlinie des Textes an der angegebenen point liegt.
Einige Schriftarten können überlappende Unterpfade erzeugen und erfordern die Qt::WindingFill
fill rule für eine korrekte Darstellung.
![]() | QLinearGradient myGradient; QPen myPen; QFont myFont; QPointF baseline(x, y); QPainterPath myPath; myPath.addText(baseline, myFont, tr("Qt")); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
Siehe auch QPainter::drawText(), Composing a QPainterPath, und setFillRule().
void QPainterPath::addText(qreal x, qreal y, const QFont &font, const QString &text)
Dies ist eine überladene Funktion.
Fügt den angegebenen text zu diesem Pfad als eine Reihe von geschlossenen Unterpfaden hinzu, die aus dem angegebenen font erstellt werden. Die Unterpfade werden so positioniert, dass das linke Ende der Grundlinie des Textes an dem durch (x, y) angegebenen Punkt liegt.
qreal QPainterPath::angleAtPercent(qreal t) const
Gibt den Winkel der Bahntangente am Prozentsatz t zurück. Das Argument t muss zwischen 0 und 1 liegen.
Positive Werte für die Winkel bedeuten gegen den Uhrzeigersinn, während negative Werte den Uhrzeigersinn bedeuten. Null Grad befindet sich an der 3-Uhr-Position.
Beachten Sie, dass die Prozentmessung ähnlich wie bei den anderen Prozentmethoden nicht linear zur Länge ist, wenn Kurven im Pfad vorhanden sind. Wenn Kurven vorhanden sind, wird das Prozentargument auf den t-Parameter der Bezier-Gleichungen abgebildet.
void QPainterPath::arcMoveTo(const QRectF &rectangle, qreal angle)
Erzeugt einen Zug, der auf dem Bogen liegt, der den angegebenen rectangle auf angle einnimmt.
Die Winkel werden in Grad angegeben. Bögen im Uhrzeigersinn können mit negativen Winkeln angegeben werden.
Siehe auch moveTo() und arcTo().
void QPainterPath::arcMoveTo(qreal x, qreal y, qreal width, qreal height, qreal angle)
Dies ist eine überladene Funktion.
Erzeugt einen Zug, der auf dem Bogen liegt, der den QRectF(x, y, width, height) bei angle belegt.
void QPainterPath::arcTo(const QRectF &rectangle, qreal startAngle, qreal sweepLength)
Erzeugt einen Bogen, der die angegebene rectangle einnimmt, am angegebenen startAngle beginnt und sich sweepLength Grad gegen den Uhrzeigersinn erstreckt.
Die Winkel werden in Grad angegeben. Bögen im Uhrzeigersinn können mit negativen Winkeln angegeben werden.
Beachten Sie, dass diese Funktion den Startpunkt des Bogens mit der aktuellen Position verbindet, wenn sie nicht bereits verbunden sind. Nachdem der Bogen hinzugefügt wurde, ist die aktuelle Position der letzte Punkt des Bogens. Um eine Linie zurück zum ersten Punkt zu zeichnen, verwenden Sie die Funktion closeSubpath().
![]() | QPainterPath myPath; myPath.moveTo(center); myPath.arcTo(boundingRect, startAngle, sweepLength); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
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)
Dies ist eine überladene Funktion.
Erzeugt einen Bogen, der das Rechteck QRectF(x, y, width, height) einnimmt, am angegebenen startAngle beginnt und sich um sweepLength Grad gegen den Uhrzeigersinn erstreckt.
QRectF QPainterPath::boundingRect() const
Gibt das Begrenzungsrechteck dieses Malerpfads als Rechteck mit Fließkommagenauigkeit zurück.
Siehe auch controlPointRect().
int QPainterPath::capacity() const
Gibt die Anzahl der von QPainterPath zugewiesenen Elemente zurück.
Siehe auch clear() und reserve().
void QPainterPath::clear()
Löscht die gespeicherten Pfadelemente.
Dies ermöglicht es dem Pfad, frühere Speicherzuweisungen wieder zu verwenden.
Siehe auch reserve() und capacity().
void QPainterPath::closeSubpath()
Schließt den aktuellen Teilpfad, indem es eine Linie zum Anfang des Teilpfades zieht und automatisch einen neuen Pfad beginnt. Der aktuelle Punkt des neuen Pfades ist (0, 0).
Wenn der Unterpfad keine Elemente enthält, führt diese Funktion nichts aus.
Siehe auch moveTo() und Composing a QPainterPath.
void QPainterPath::connectPath(const QPainterPath &path)
Verbindet das angegebene path mit diesem Pfad, indem eine Linie vom letzten Element dieses Pfades zum ersten Element des angegebenen Pfades 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 die Kanten des aktuellen Pfades und p überschneiden.
Mengenoperationen auf Pfaden behandeln die Pfade als Bereiche. Nicht geschlossene Pfade werden als implizit geschlossen behandelt.
Siehe auch intersects().
bool QPainterPath::contains(const QPointF &point) const
Gibt true
zurück, wenn die angegebene point innerhalb des Pfades liegt, andernfalls false
.
Siehe auch intersects().
bool QPainterPath::contains(const QRectF &rectangle) const
Gibt true
zurück, wenn die angegebene rectangle innerhalb des Pfades liegt, ansonsten false
.
QRectF QPainterPath::controlPointRect() const
Gibt das Rechteck zurück, das alle Punkte und Kontrollpunkte in diesem Pfad enthält.
Diese Funktion ist wesentlich schneller als die exakte boundingRect(), und das zurückgegebene Rechteck ist immer eine Obermenge des Rechtecks, das von boundingRect() zurückgegeben wird.
Siehe auch boundingRect().
void QPainterPath::cubicTo(const QPointF &c1, const QPointF &c2, const QPointF &endPoint)
Fügt eine kubische Bezier-Kurve zwischen der aktuellen Position und der angegebenen endPoint unter Verwendung der durch c1 und c2 angegebenen Kontrollpunkte hinzu.
Nachdem die Kurve hinzugefügt wurde, wird die aktuelle Position auf den Endpunkt der Kurve aktualisiert.
![]() | QLinearGradient myGradient; QPen myPen; QPainterPath myPath; myPath.cubicTo(c1, c2, endPoint); QPainter painter(this); painter.setBrush(myGradient); painter.setPen(myPen); painter.drawPath(myPath); |
Siehe auch quadTo() und Composing a QPainterPath.
void QPainterPath::cubicTo(qreal c1X, qreal c1Y, qreal c2X, qreal c2Y, qreal endPointX, qreal endPointY)
Dies ist eine überladene Funktion.
Fügt eine kubische Bezier-Kurve zwischen der aktuellen Position und dem Endpunkt (endPointX, endPointY) mit den durch (c1X, c1Y) und (c2X, c2Y) angegebenen Kontrollpunkten hinzu.
QPointF QPainterPath::currentPosition() const
Gibt die aktuelle Position des Pfades zurück.
QPainterPath::Element QPainterPath::elementAt(int index) const
Gibt das Element unter der angegebenen Adresse index im Malerpfad zurück.
Siehe auch ElementType, elementCount(), und isEmpty().
int QPainterPath::elementCount() const
Gibt die Anzahl der Pfadelemente im Malerpfad zurück.
Siehe auch ElementType, elementAt(), und isEmpty().
Qt::FillRule QPainterPath::fillRule() const
Gibt die aktuell eingestellte Füllregel für den Malerpfad zurück.
Siehe auch setFillRule().
QPainterPath QPainterPath::intersected(const QPainterPath &p) const
Gibt einen Pfad zurück, der der Schnittpunkt des Füllbereichs dieses Pfads und des Füllbereichs von p ist. Bezier-Kurven können aufgrund der numerischen Instabilität von Bezier-Kurvenschnittpunkten zu Liniensegmenten abgeflacht werden.
bool QPainterPath::intersects(const QPainterPath &p) const
Gibt true
zurück, wenn der aktuelle Pfad an irgendeinem Punkt den angegebenen Pfad p schneidet. Gibt auch true
zurück, wenn der aktuelle Pfad einen beliebigen Teil von p enthält oder darin enthalten ist.
Mengenoperationen auf Pfaden behandeln die Pfade als Bereiche. Nicht-geschlossene Pfade werden als implizit 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.
Ein Schnittpunkt 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 eingeschlossenen Bereich überschneidet. Diese Funktion berücksichtigt die aktuelle fillRule, um zu bestimmen, was als innerhalb des Pfades betrachtet wird.
Siehe auch contains().
bool QPainterPath::isEmpty() const
Gibt true
zurück, wenn es entweder keine Elemente in diesem Pfad gibt 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 Pfades zurück.
void QPainterPath::lineTo(const QPointF &endPoint)
Fügt eine gerade Linie von der aktuellen Position zur angegebenen endPoint hinzu. Nachdem die Linie gezeichnet wurde, wird die aktuelle Position so aktualisiert, dass sie sich am Endpunkt der Linie befindet.
Siehe auch addPolygon(), addRect(), und Composing a QPainterPath.
void QPainterPath::lineTo(qreal x, qreal y)
Dies ist eine überladene Funktion.
Zeichnet eine Linie von der aktuellen Position zu dem Punkt (x, y).
void QPainterPath::moveTo(const QPointF &point)
Verschiebt den aktuellen Punkt zum angegebenen point, wobei implizit ein neuer Unterpfad begonnen und der vorherige geschlossen wird.
Siehe auch closeSubpath() und Composing a QPainterPath.
void QPainterPath::moveTo(qreal x, qreal y)
Dies ist eine überladene Funktion.
Verschiebt die aktuelle Position nach (x, y) und beginnt einen neuen Unterpfad, wobei der vorherige Pfad implizit geschlossen wird.
qreal QPainterPath::percentAtLength(qreal len) const
Gibt den prozentualen Anteil des gesamten Pfades bei der angegebenen Länge len zurück.
Beachten Sie, dass ähnlich wie bei anderen Prozent-Methoden die Messung des Prozentsatzes in Bezug auf die Länge nicht linear ist, wenn der Pfad Kurven enthält. Wenn Kurven vorhanden sind, wird das Prozent-Argument auf den t-Parameter der Bezier-Gleichungen abgebildet.
QPointF QPainterPath::pointAtPercent(qreal t) const
Gibt den Punkt in Prozent t des aktuellen Pfades zurück. Das Argument t muss zwischen 0 und 1 liegen.
Beachten Sie, dass ähnlich wie bei anderen Prozent-Methoden die Messung des Prozentsatzes in Bezug auf die Länge nicht linear ist, wenn der Pfad Kurven enthält. Wenn Kurven vorhanden sind, wird das Prozentargument auf den t-Parameter der Bezier-Gleichungen abgebildet.
void QPainterPath::quadTo(const QPointF &c, const QPointF &endPoint)
Fügt eine quadratische Bezier-Kurve zwischen der aktuellen Position und der angegebenen endPoint mit dem durch c angegebenen Kontrollpunkt hinzu.
Nach dem Hinzufügen der Kurve wird der aktuelle Punkt so aktualisiert, dass er sich am Endpunkt der Kurve befindet.
Siehe auch cubicTo() und Composing a QPainterPath.
void QPainterPath::quadTo(qreal cx, qreal cy, qreal endPointX, qreal endPointY)
Dies ist eine überladene Funktion.
Fügt eine quadratische Bezier-Kurve zwischen dem aktuellen Punkt und dem Endpunkt (endPointX, endPointY) mit dem durch (cx, cy) angegebenen Kontrollpunkt hinzu.
void QPainterPath::reserve(int size)
Reserviert eine bestimmte Anzahl von Elementen im internen Speicher von QPainterPath.
Versucht, Speicher für mindestens size Elemente zu reservieren.
Siehe auch clear(), capacity(), und QList::reserve().
void QPainterPath::setElementPositionAt(int index, qreal x, qreal y)
Setzt die x- und y-Koordinate des Elements mit dem Index index auf x und y.
void QPainterPath::setFillRule(Qt::FillRule fillRule)
Setzt die Füllregel des Malerpfades auf die angegebene fillRule. 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. Dies bedeutet, dass alle Unterpfade, die sich schneiden, zusammengeführt werden und ein Pfad zurückgegeben wird, der keine sich schneidenden Kanten enthält. Aufeinanderfolgende parallele Linien werden ebenfalls zusammengeführt. Der vereinfachte Pfad verwendet immer die Standard-Füllregel, Qt::OddEvenFill. Bezier-Kurven können aufgrund der numerischen Instabilität von Bezier-Kurvenschnittpunkten zu Liniensegmenten abgeflacht werden.
qreal QPainterPath::slopeAtPercent(qreal t) const
Gibt die Steigung des Pfades in Prozent t zurück. Das Argument t muss zwischen 0 und 1 liegen.
Beachten Sie, dass ähnlich wie bei anderen Prozent-Methoden die Messung des Prozentsatzes in Bezug auf die Länge nicht linear ist, wenn Kurven im Pfad vorhanden sind. Wenn Kurven vorhanden sind, wird das Prozentargument auf den t-Parameter der Bezier-Gleichungen abgebildet.
QPainterPath QPainterPath::subtracted(const QPainterPath &p) const
Gibt einen Pfad zurück, bei dem die Füllfläche von p von der Füllfläche dieses Pfades subtrahiert wird.
Mengenoperationen auf Pfaden behandeln die Pfade als Flächen. Nicht geschlossene Pfade werden als implizit geschlossen behandelt. Bezier-Kurven können aufgrund der numerischen Instabilität von Bezier-Kurvenschnittpunkten zu Liniensegmenten abgeflacht werden.
[noexcept]
void QPainterPath::swap(QPainterPath &other)
Tauscht den Pfad des Malers mit other aus. Dieser Vorgang ist sehr schnell und schlägt nie fehl.
QPolygonF QPainterPath::toFillPolygon(const QTransform &matrix = QTransform()) const
Konvertiert den Pfad in ein Polygon unter Verwendung von QTransform. matrix und gibt das Polygon zurück.
Das Polygon wird erstellt, indem zunächst alle Unterpfade in Polygone umgewandelt werden und dann eine Rückspultechnik verwendet wird, um sicherzustellen, dass überlappende Unterpfade mit der richtigen Füllregel gefüllt werden können.
Beachten Sie, dass beim Zurückspulen zusätzliche Linien in das Polygon eingefügt werden, so dass 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
Konvertiert den Pfad in eine Liste von Polygonen unter Verwendung von QTransform matrix , und gibt die Liste zurück.
Die Funktion unterscheidet sich von der Funktion toFillPolygon() darin, dass sie mehrere Polygone erzeugt. Sie wird bereitgestellt, weil 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.
Die Funktion toFillPolygons() unterscheidet sich von der Funktion toSubpathPolygons() dadurch, dass sie nur Polygone für Unterpfade erzeugt, die überlappende begrenzende Rechtecke haben.
Wie die Funktion toFillPolygon() verwendet diese Funktion eine Rückspultechnik, um sicherzustellen, dass überlappende Unterpfade mit der richtigen Füllregel gefüllt werden können. Beachten Sie, dass beim Zurückspulen zusätzliche Linien in die Polygone eingefügt werden, so dass 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 Pfades und gibt sie zurück.
Dabei wird die Reihenfolge der Elemente umgekehrt: Wenn ein QPainterPath durch den Aufruf der Funktionen moveTo(), lineTo() und cubicTo() in der angegebenen Reihenfolge erstellt wurde, wird die umgekehrte Kopie durch den Aufruf von cubicTo(), lineTo() und moveTo() erstellt.
QList<QPolygonF> QPainterPath::toSubpathPolygons(const QTransform &matrix = QTransform()) const
Konvertiert den Pfad in eine Liste von Polygonen unter Verwendung von QTransform matrix und gibt die Liste zurück.
Diese Funktion erstellt ein Polygon für jeden Unterpfad, unabhängig von sich überschneidenden Unterpfaden (d.h. überlappenden begrenzenden Rechtecken). Um sicherzustellen, dass solche sich überschneidenden Teilpfade korrekt gefüllt werden, verwenden Sie stattdessen die Funktion toFillPolygons().
Siehe auch toFillPolygons(), toFillPolygon(), und QPainterPath Conversion.
void QPainterPath::translate(qreal dx, qreal dy)
Übersetzt alle Elemente im Pfad mit (dx, dy).
Siehe auch translated().
void QPainterPath::translate(const QPointF &offset)
Dies ist eine überladene Funktion.
Übersetzt alle Elemente im Pfad mit dem angegebenen offset.
Siehe auch translated().
QPainterPath QPainterPath::translated(qreal dx, qreal dy) const
Gibt eine Kopie des Pfades zurück, der durch (dx, dy) übersetzt wird.
Siehe auch translate().
QPainterPath QPainterPath::translated(const QPointF &offset) const
Dies ist eine überladene Funktion.
Gibt eine Kopie des Pfades zurück, der mit dem angegebenen offset übersetzt wurde.
Siehe auch translate().
QPainterPath QPainterPath::united(const QPainterPath &p) const
Gibt einen Pfad zurück, der die Vereinigung des Füllbereichs dieses Pfads und des Füllbereichs von p ist.
Mengenoperationen auf Pfaden behandeln die Pfade als Bereiche. Nicht geschlossene Pfade werden als implizit geschlossen behandelt. Bezier-Kurven können aufgrund der numerischen Instabilität bei der Durchführung von Bezier-Kurvenschnittpunkten zu Liniensegmenten abgeflacht werden.
Siehe auch intersected() und subtracted().
bool QPainterPath::operator!=(const QPainterPath &path) const
Gibt true
zurück, wenn sich dieser Malerpfad von dem angegebenen path unterscheidet.
Beachten Sie, dass der Vergleich von Pfaden einen Vergleich pro Element beinhalten kann, was bei komplexen Pfaden langsam sein kann.
Siehe auch operator==().
QPainterPath QPainterPath::operator&(const QPainterPath &other) const
Gibt die Schnittmenge aus diesem Pfad und dem Pfad other zurück.
Siehe auch intersected(), operator&=(), united(), und operator|().
QPainterPath &QPainterPath::operator&=(const QPainterPath &other)
Schneidet diesen Pfad mit other und gibt einen Verweis auf diesen Pfad zurück.
Siehe auch intersected(), operator&(), und operator|=().
QPainterPath QPainterPath::operator+(const QPainterPath &other) const
Gibt die Vereinigung dieses Pfades und des Pfades other zurück. Diese Funktion ist äquivalent zu operator|().
Siehe auch united(), operator+=(), und operator-().
QPainterPath &QPainterPath::operator+=(const QPainterPath &other)
Vereinigt diesen Pfad mit other und gibt einen Verweis auf diesen Pfad zurück. Dies ist äquivalent zu operator|=().
Siehe auch united(), operator+(), und operator-=().
QPainterPath QPainterPath::operator-(const QPainterPath &other) const
Subtrahiert den Pfad other von einer Kopie dieses Pfades 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 einen Verweis auf diesen Pfad zurück.
Siehe auch subtracted(), operator-(), und operator+=().
[noexcept]
QPainterPath &QPainterPath::operator=(QPainterPath &&other)
Verschieben - weist other dieser QPainterPath Instanz zu.
QPainterPath &QPainterPath::operator=(const QPainterPath &path)
Weist diesem Malerpfad die angegebene path zu.
Siehe auch QPainterPath().
bool QPainterPath::operator==(const QPainterPath &path) const
Gibt true
zurück, wenn dieser Malerpfad mit dem angegebenen path übereinstimmt.
Beachten Sie, dass der Vergleich von Pfaden einen Vergleich pro Element 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)
Vereinigt diesen Pfad mit other und gibt einen Verweis auf diesen Pfad zurück.
Siehe auch united(), operator|(), und operator&=().
Verwandte Nicht-Mitglieder
QDataStream &operator<<(QDataStream &stream, const QPainterPath &path)
Schreibt den angegebenen Maler path in den angegebenen stream und gibt eine Referenz auf stream zurück.
Siehe auch Serialisierung von Qt-Datentypen.
QDataStream &operator>>(QDataStream &stream, QPainterPath &path)
Liest einen Malerpfad aus der angegebenen stream in die angegebene path und gibt eine Referenz auf die stream zurück.
Siehe auch Serialisierung von Qt-Datentypen.
© 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.