QTransform Class

Die Klasse QTransform spezifiziert 2D-Transformationen eines Koordinatensystems. Mehr...

Kopfzeile: #include <QTransform>
CMake: find_package(Qt6 REQUIRED COMPONENTS Gui)
target_link_libraries(mytarget PRIVATE Qt6::Gui)
qmake: QT += gui

Öffentliche Typen

enum TransformationType { TxNone, TxTranslate, TxScale, TxRotate, TxShear, TxProject }

Öffentliche Funktionen

QTransform()
QTransform(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy)
QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)
qreal m11() const
qreal m12() const
qreal m13() const
qreal m21() const
qreal m22() const
qreal m23() const
qreal m31() const
qreal m32() const
qreal m33() const
QTransform adjoint() const
qreal determinant() const
qreal dx() const
qreal dy() const
QTransform inverted(bool *invertible = nullptr) const
bool isAffine() const
bool isIdentity() const
bool isInvertible() const
bool isRotating() const
bool isScaling() const
bool isTranslating() const
void map(qreal x, qreal y, qreal *tx, qreal *ty) const
QLine map(const QLine &l) const
QLineF map(const QLineF &line) const
QPainterPath map(const QPainterPath &path) const
QPoint map(const QPoint &point) const
QPointF map(const QPointF &p) const
QPolygon map(const QPolygon &polygon) const
QPolygonF map(const QPolygonF &polygon) const
QRegion map(const QRegion &region) const
void map(int x, int y, int *tx, int *ty) const
QRectF mapRect(const QRectF &rectangle) const
QRect mapRect(const QRect &rectangle) const
QPolygon mapToPolygon(const QRect &rectangle) const
void reset()
(since 6.5) QTransform &rotate(qreal a, Qt::Axis axis, qreal distanceToPlane)
QTransform &rotate(qreal a, Qt::Axis axis = Qt::ZAxis)
(since 6.5) QTransform &rotateRadians(qreal a, Qt::Axis axis, qreal distanceToPlane)
QTransform &rotateRadians(qreal a, Qt::Axis axis = Qt::ZAxis)
QTransform &scale(qreal sx, qreal sy)
void setMatrix(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)
QTransform &shear(qreal sh, qreal sv)
QTransform &translate(qreal dx, qreal dy)
QTransform transposed() const
QTransform::TransformationType type() const
QVariant operator QVariant() const
bool operator!=(const QTransform &matrix) const
QTransform operator*(const QTransform &matrix) const
QTransform &operator*=(const QTransform &matrix)
QTransform &operator*=(qreal scalar)
QTransform &operator+=(qreal scalar)
QTransform &operator-=(qreal scalar)
QTransform &operator/=(qreal scalar)
QTransform &operator=(const QTransform &matrix)
bool operator==(const QTransform &matrix) const

Statische öffentliche Mitglieder

QTransform fromScale(qreal sx, qreal sy)
QTransform fromTranslate(qreal dx, qreal dy)
bool quadToQuad(const QPolygonF &one, const QPolygonF &two, QTransform &trans)
bool quadToSquare(const QPolygonF &quad, QTransform &trans)
bool squareToQuad(const QPolygonF &quad, QTransform &trans)
bool qFuzzyCompare(const QTransform &t1, const QTransform &t2)
size_t qHash(const QTransform &key, size_t seed = 0)
QLine operator*(const QLine &line, const QTransform &matrix)
QLineF operator*(const QLineF &line, const QTransform &matrix)
QPainterPath operator*(const QPainterPath &path, const QTransform &matrix)
QPoint operator*(const QPoint &point, const QTransform &matrix)
QPointF operator*(const QPointF &point, const QTransform &matrix)
QPolygon operator*(const QPolygon &polygon, const QTransform &matrix)
QPolygonF operator*(const QPolygonF &polygon, const QTransform &matrix)
QRegion operator*(const QRegion &region, const QTransform &matrix)
QDataStream &operator<<(QDataStream &stream, const QTransform &matrix)
QDataStream &operator>>(QDataStream &stream, QTransform &matrix)

Detaillierte Beschreibung

Eine Transformation gibt an, wie das Koordinatensystem zu übersetzen, zu skalieren, zu scheren, zu drehen oder zu projizieren ist und wird typischerweise beim Rendern von Grafiken verwendet.

Ein QTransform-Objekt kann mit den Funktionen setMatrix(), scale(), rotate(), translate() und shear() erstellt werden. Alternativ kann es auch durch Anwendung von basic matrix operations erstellt werden. Die Matrix kann auch definiert werden, wenn sie konstruiert wird, und sie kann mit der Funktion reset() auf die Identitätsmatrix (die Standardeinstellung) zurückgesetzt werden.

Die Klasse QTransform unterstützt das Mapping von grafischen Primitiven: Ein gegebener Punkt, eine Linie, ein Polygon, eine Region oder ein Malerpfad kann mit der Funktion map() auf das durch diese Matrix definierte Koordinatensystem abgebildet werden. Im Falle eines Rechtecks können seine Koordinaten mit der Funktion mapRect() transformiert werden. Ein Rechteck kann auch mit der Funktion mapToPolygon() in ein Polygon umgewandelt werden (das auf das durch diese Matrix definierte Koordinatensystem abgebildet wird).

QTransform bietet die Funktion isIdentity(), die true zurückgibt, wenn die Matrix die Identitätsmatrix ist, und die Funktion isInvertible(), die true zurückgibt, wenn die Matrix nicht singulär ist (d.h. AB = BA = I). Die Funktion inverted() gibt eine invertierte Kopie dieser Matrix zurück, wenn sie invertierbar ist (andernfalls gibt sie die Identitätsmatrix zurück), und adjoint() gibt die klassische Adjungierte der Matrix zurück. Darüber hinaus bietet QTransform die Funktion determinant(), die die Determinante der Matrix zurückgibt.

Schließlich unterstützt die Klasse QTransform Matrixmultiplikation, -addition und -subtraktion, und Objekte der Klasse können sowohl gestreamt als auch verglichen werden.

Rendering von Grafiken

Beim Rendern von Grafiken definiert die Matrix die Transformationen, aber die eigentliche Transformation wird von den Zeichenroutinen in QPainter durchgeführt.

Standardmäßig arbeitet QPainter mit dem eigenen Koordinatensystem des zugehörigen Geräts. Das Standardkoordinatensystem von QPaintDevice hat seinen Ursprung an der linken oberen Position. Die x-Werte steigen nach rechts, die y-Werte steigen nach unten. Eine vollständige Beschreibung finden Sie in der Dokumentation des Koordinatensystems.

QPainter verfügt über Funktionen zum Verschieben, Skalieren, Scheren und Drehen des Koordinatensystems ohne Verwendung einer QTransform. Ein Beispiel:

void SimpleTransformation::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setPen(QPen(Qt::blue, 1, Qt::DashLine));
    painter.drawRect(0, 0, 100, 100);

    painter.rotate(45);

    painter.setFont(QFont("Helvetica", 24));
    painter.setPen(QPen(Qt::black, 1));
    painter.drawText(20, 10, "QTransform");
}

Obwohl diese Funktionen sehr praktisch sind, kann es effizienter sein, eine QTransform zu erstellen und QPainter::setTransform() aufzurufen, wenn Sie mehr als eine einzige Transformationsoperation durchführen möchten. Ein Beispiel:

void CombinedTransformation::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setPen(QPen(Qt::blue, 1, Qt::DashLine));
    painter.drawRect(0, 0, 100, 100);

    QTransform transform;
    transform.translate(50, 50);
    transform.rotate(45);
    transform.scale(0.5, 1.0);
    painter.setTransform(transform);

    painter.setFont(QFont("Helvetica", 24));
    painter.setPen(QPen(Qt::black, 1));
    painter.drawText(20, 10, "QTransform");
}

Grundlegende Matrixoperationen

Ein QTransform-Objekt enthält eine 3 x 3 Matrix. Die Elemente m31 (dx) und m32 (dy) geben die horizontale und vertikale Verschiebung an. Die Elemente m11 und m22 bestimmen die horizontale und vertikale Skalierung. Die Elemente m21 und m12 geben die horizontale und vertikale Scherung an. Und schließlich geben die Elemente m13 und m23 die horizontale und vertikale Projektion an, wobei m33 einen zusätzlichen Projektionsfaktor darstellt.

QTransform transformiert einen Punkt in der Ebene in einen anderen Punkt unter Verwendung der folgenden Formeln:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (!isAffine()) {
    w' = m13*x + m23*y + m33
    x' /= w'
    y' /= w'
}

Der Punkt (x, y) ist der ursprüngliche Punkt, und (x', y') ist der transformierte Punkt. (x', y') kann in (x, y) zurückverwandelt werden, indem die gleiche Operation an der Matrix inverted() durchgeführt wird.

Die verschiedenen Matrixelemente können beim Aufbau der Matrix oder später mit der Funktion setMatrix() festgelegt werden. Sie können auch mit den Komfortfunktionen translate(), rotate(), scale() und shear() manipuliert werden. Die aktuell eingestellten Werte können mit den Funktionen m11(), m12(), m13(), m21(), m22(), m23(), m31(), m32(), m33(), dx() und dy() abgerufen werden.

Die Übersetzung ist die einfachste Transformation. Die Einstellung dx und dy verschiebt das Koordinatensystem dx um Einheiten entlang der X-Achse und dy um Einheiten entlang der Y-Achse. Die Skalierung kann durch die Einstellung m11 und m22 erfolgen. Wenn Sie beispielsweise m11 auf 2 und m22 auf 1,5 setzen, wird die Höhe verdoppelt und die Breite um 50 % erhöht. Bei der Identitätsmatrix sind m11, m22 und m33 auf 1 gesetzt (alle anderen sind auf 0 gesetzt) und bilden einen Punkt auf sich selbst ab. Die Scherung wird durch m12 und m21 gesteuert. Wenn diese Elemente auf Werte ungleich Null gesetzt werden, wird das Koordinatensystem verdreht. Eine Drehung wird durch die Einstellung der Scherungsfaktoren und der Skalierungsfaktoren erreicht. Die perspektivische Transformation wird durch die Einstellung der Projektionsfaktoren und der Skalierungsfaktoren erreicht.

Kombinierte Transformationen

Hier ein Beispiel für kombinierte Transformationen unter Verwendung grundlegender Matrixoperationen:

void BasicOperations::paintEvent(QPaintEvent *)
{
    const double a = qDegreesToRadians(45.0);
    double sina = sin(a);
    double cosa = cos(a);

    QTransform scale(0.5, 0, 0, 1.0, 0, 0);
    QTransform rotate(cosa, sina, -sina, cosa, 0, 0);
    QTransform translate(1, 0, 0, 1, 50.0, 50.0);

    QTransform transform = scale * rotate * translate;

    QPainter painter(this);
    painter.setPen(QPen(Qt::blue, 1, Qt::DashLine));
    painter.drawRect(0, 0, 100, 100);

    painter.setTransform(transform);

    painter.setFont(QFont("Helvetica", 24));
    painter.setPen(QPen(Qt::black, 1));
    painter.drawText(20, 10, "QTransform");
}

Die kombinierte Transformation skaliert zunächst jeden Operanden, dreht ihn dann und verschiebt ihn schließlich, genau in der Reihenfolge, in der das Produkt seiner Faktoren geschrieben wird. Das bedeutet, dass der Punkt, auf den die Transformationen angewandt werden, implizit auf der linken Seite mit der Transformation zu seiner Rechten multipliziert wird.

Beziehung zur Matrixnotation

Die Matrixnotation in QTransform ist die Transponierung einer allgemein gelehrten Konvention, die Transformationen und Punkte als Matrizen und Vektoren darstellt. Diese Konvention multipliziert ihre Matrix auf der linken Seite und den Spaltenvektor auf der rechten Seite. Mit anderen Worten: Wenn mehrere Transformationen auf einen Punkt angewandt werden, wirkt die ganz rechts stehende Matrix zuerst direkt auf den Vektor. Dann wirkt die nächste Matrix von links auf das Ergebnis der ersten Operation - und so weiter. Folglich multipliziert diese Konvention die Matrizen, die eine zusammengesetzte Transformation bilden, in umgekehrter Reihenfolge wie in QTransform, wie Sie unter Combining Transforms sehen können. Das Transponieren der Matrizen und das Kombinieren rechts von einem Zeilenvektor, der den Punkt repräsentiert, lässt die Matrizen der Transformationen in ihrem Produkt in der Reihenfolge erscheinen, in der wir uns die Anwendung der Transformationen auf den Punkt vorstellen.

Siehe auch QPainter, Koordinatensystem, Beispiel für affine Transformationen, und Beispiel für Transformationen.

Dokumentation der Mitgliedstypen

enum QTransform::TransformationType

KonstanteWert
QTransform::TxNone0x00
QTransform::TxTranslate0x01
QTransform::TxScale0x02
QTransform::TxRotate0x04
QTransform::TxShear0x08
QTransform::TxProject0x10

Dokumentation der Mitgliedsfunktionen

QTransform::QTransform()

Konstruiert eine Identitätsmatrix.

Alle Elemente werden auf Null gesetzt, außer m11 und m22 (zur Angabe der Skala) und m33, die auf 1 gesetzt werden.

Siehe auch reset().

QTransform::QTransform(qreal m11, qreal m12, qreal m21, qreal m22, qreal dx, qreal dy)

Konstruiert eine Matrix mit den Elementen m11, m12, m21, m22, dx und dy.

Siehe auch setMatrix().

QTransform::QTransform(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)

Konstruiert eine Matrix mit den Elementen m11, m12, m13, m21, m22, m23, m31, m32, m33.

Siehe auch setMatrix().

qreal QTransform::m11() const

Gibt den horizontalen Skalierungsfaktor zurück.

Siehe auch scale() und Basic Matrix Operations.

qreal QTransform::m12() const

Gibt den vertikalen Scherungsfaktor zurück.

Siehe auch shear() und Basic Matrix Operations.

qreal QTransform::m13() const

Gibt den horizontalen Projektionsfaktor zurück.

Siehe auch translate() und Basic Matrix Operations.

qreal QTransform::m21() const

Gibt den horizontalen Scherungsfaktor zurück.

Siehe auch shear() und Basic Matrix Operations.

qreal QTransform::m22() const

Gibt den vertikalen Skalierungsfaktor zurück.

Siehe auch scale() und Basic Matrix Operations.

qreal QTransform::m23() const

Gibt den vertikalen Projektionsfaktor zurück.

Siehe auch translate() und Basic Matrix Operations.

qreal QTransform::m31() const

Gibt den horizontalen Übersetzungsfaktor zurück.

Siehe auch dx(), translate(), und Basic Matrix Operations.

qreal QTransform::m32() const

Gibt den vertikalen Übersetzungsfaktor zurück.

Siehe auch dy(), translate(), und Basic Matrix Operations.

qreal QTransform::m33() const

Gibt den Divisionsfaktor zurück.

Siehe auch translate() und Basic Matrix Operations.

QTransform QTransform::adjoint() const

Gibt den Adjungierten dieser Matrix zurück.

qreal QTransform::determinant() const

Gibt die Determinante der Matrix zurück.

qreal QTransform::dx() const

Gibt den horizontalen Übersetzungsfaktor zurück.

Siehe auch m31(), translate(), und Basic Matrix Operations.

qreal QTransform::dy() const

Gibt den vertikalen Translationsfaktor zurück.

Siehe auch translate() und Basic Matrix Operations.

[static] QTransform QTransform::fromScale(qreal sx, qreal sy)

Erzeugt eine Matrix, die einer Skalierung von sx horizontal und sy vertikal entspricht. Dies ist dasselbe wie QTransform().scale(sx, sy), aber etwas schneller.

[static] QTransform QTransform::fromTranslate(qreal dx, qreal dy)

Erzeugt eine Matrix, die einer Verschiebung von dx entlang der x-Achse und dy entlang der y-Achse entspricht. Dies ist dasselbe wie QTransform().translate(dx, dy), aber etwas schneller.

QTransform QTransform::inverted(bool *invertible = nullptr) const

Gibt eine invertierte Kopie dieser Matrix zurück.

Wenn die Matrix singulär (nicht invertierbar) ist, ist die zurückgegebene Matrix die Identitätsmatrix. Wenn invertible gültig ist (d. h. nicht 0), wird sein Wert auf true gesetzt, wenn die Matrix invertierbar ist, andernfalls auf false.

Siehe auch isInvertible().

bool QTransform::isAffine() const

Gibt true zurück, wenn die Matrix eine affine Transformation darstellt, andernfalls wird false zurückgegeben.

bool QTransform::isIdentity() const

Gibt true zurück, wenn die Matrix die Identitätsmatrix ist, andernfalls false.

Siehe auch reset().

bool QTransform::isInvertible() const

Gibt true zurück, wenn die Matrix invertierbar ist, andernfalls false.

Siehe auch inverted().

bool QTransform::isRotating() const

Gibt true zurück, wenn die Matrix eine Art von Drehtransformation darstellt, andernfalls false.

Hinweis: Eine Rotationstransformation von 180 Grad und/oder 360 Grad wird wie eine Skalierungstransformation behandelt.

Siehe auch reset().

bool QTransform::isScaling() const

Gibt true zurück, wenn die Matrix eine Skalierungstransformation darstellt, andernfalls false.

Siehe auch reset().

bool QTransform::isTranslating() const

Gibt true zurück, wenn die Matrix eine translatorische Transformation darstellt, andernfalls false.

Siehe auch reset().

void QTransform::map(qreal x, qreal y, qreal *tx, qreal *ty) const

Überträgt die angegebenen Koordinaten x und y in das durch diese Matrix definierte Koordinatensystem. Die resultierenden Werte werden in *tx bzw. *ty eingetragen.

Die Koordinaten werden mit Hilfe der folgenden Formeln transformiert:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (!isAffine()) {
    w' = m13*x + m23*y + m33
    x' /= w'
    y' /= w'
}

Der Punkt (x, y) ist der ursprüngliche Punkt, und (x', y') ist der transformierte Punkt.

Siehe auch Basic Matrix Operations.

QLine QTransform::map(const QLine &l) const

Dies ist eine überladene Funktion.

Erzeugt und gibt ein QLineF Objekt zurück, das eine Kopie der gegebenen Linie l ist, die auf das durch diese Matrix definierte Koordinatensystem abgebildet wird.

QLineF QTransform::map(const QLineF &line) const

Dies ist eine überladene Funktion.

Erzeugt und gibt ein QLine Objekt zurück, das eine Kopie der angegebenen line ist und in das durch diese Matrix definierte Koordinatensystem abgebildet wird. Beachten Sie, dass die transformierten Koordinaten auf die nächste Ganzzahl gerundet werden.

QPainterPath QTransform::map(const QPainterPath &path) const

Dies ist eine überladene Funktion.

Erzeugt und gibt ein QPainterPath Objekt zurück, das eine Kopie der angegebenen path ist und in das durch diese Matrix definierte Koordinatensystem abgebildet wird.

QPoint QTransform::map(const QPoint &point) const

Dies ist eine überladene Funktion.

Erzeugt und gibt ein QPoint Objekt zurück, das eine Kopie der angegebenen point ist und in das durch diese Matrix definierte Koordinatensystem abgebildet wird. Beachten Sie, dass die transformierten Koordinaten auf die nächste Ganzzahl gerundet werden.

QPointF QTransform::map(const QPointF &p) const

Dies ist eine überladene Funktion.

Erzeugt und gibt ein QPointF Objekt zurück, das eine Kopie des angegebenen Punktes p ist und in das durch diese Matrix definierte Koordinatensystem abgebildet wird.

QPolygon QTransform::map(const QPolygon &polygon) const

Dies ist eine überladene Funktion.

Erzeugt und gibt ein QPolygon Objekt zurück, das eine Kopie der angegebenen polygon ist und in das durch diese Matrix definierte Koordinatensystem abgebildet wird. Beachten Sie, dass die transformierten Koordinaten auf die nächste Ganzzahl gerundet werden.

QPolygonF QTransform::map(const QPolygonF &polygon) const

Dies ist eine überladene Funktion.

Erstellt ein QPolygonF Objekt, das eine Kopie der angegebenen polygon ist, und gibt es in dem durch diese Matrix definierten Koordinatensystem zurück.

QRegion QTransform::map(const QRegion &region) const

Dies ist eine überladene Funktion.

Erzeugt und gibt ein QRegion Objekt zurück, das eine Kopie der angegebenen region ist und in das durch diese Matrix definierte Koordinatensystem abgebildet wird.

Der Aufruf dieser Methode kann ziemlich teuer werden, wenn Rotationen oder Scherungen verwendet werden.

void QTransform::map(int x, int y, int *tx, int *ty) const

Dies ist eine überladene Funktion.

Überträgt die angegebenen Koordinaten x und y in das durch diese Matrix definierte Koordinatensystem. Die resultierenden Werte werden in *tx bzw. *ty eingetragen. Beachten Sie, dass die transformierten Koordinaten auf die nächste Ganzzahl gerundet werden.

QRectF QTransform::mapRect(const QRectF &rectangle) const

Erzeugt ein QRectF Objekt, das eine Kopie des angegebenen rectangle ist, und gibt es in das durch diese Matrix definierte Koordinatensystem zurück.

Die Koordinaten des Rechtecks werden anhand der folgenden Formeln transformiert:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (!isAffine()) {
    w' = m13*x + m23*y + m33
    x' /= w'
    y' /= w'
}

Wenn eine Drehung oder Scherung angegeben wurde, gibt diese Funktion das begrenzende Rechteck zurück. Um den genauen Bereich zu ermitteln, auf den sich die angegebene rectangle bezieht, verwenden Sie stattdessen die Funktion mapToPolygon().

Siehe auch mapToPolygon() und Basic Matrix Operations.

QRect QTransform::mapRect(const QRect &rectangle) const

Dies ist eine überladene Funktion.

Erzeugt und gibt ein QRect Objekt zurück, das eine Kopie der angegebenen rectangle ist und in das durch diese Matrix definierte Koordinatensystem abgebildet wird. Beachten Sie, dass die transformierten Koordinaten auf die nächste Ganzzahl gerundet werden.

QPolygon QTransform::mapToPolygon(const QRect &rectangle) const

Erzeugt und liefert eine QPolygon Darstellung des gegebenen rectangle, die in dem durch diese Matrix definierten Koordinatensystem abgebildet wird.

Die Koordinaten des Rechtecks werden anhand der folgenden Formeln transformiert:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (!isAffine()) {
    w' = m13*x + m23*y + m33
    x' /= w'
    y' /= w'
}

Polygone und Rechtecke verhalten sich bei der Transformation leicht unterschiedlich (aufgrund der Rundung ganzer Zahlen), so dass matrix.map(QPolygon(rectangle)) nicht immer mit matrix.mapToPolygon(rectangle) identisch ist.

Siehe auch mapRect() und Basic Matrix Operations.

[static] bool QTransform::quadToQuad(const QPolygonF &one, const QPolygonF &two, QTransform &trans)

Erstellt eine Transformationsmatrix, trans, die ein vierseitiges Polygon, one, auf ein anderes vierseitiges Polygon, two, abbildet. Gibt true zurück, wenn die Transformation möglich ist; andernfalls wird false zurückgegeben.

Dies ist eine Komfortmethode, die die Methoden quadToSquare() und squareToQuad() kombiniert. Sie ermöglicht die Umwandlung des Eingabevierecks in ein beliebiges anderes Viereck.

Siehe auch squareToQuad() und quadToSquare().

[static] bool QTransform::quadToSquare(const QPolygonF &quad, QTransform &trans)

Erzeugt eine Transformationsmatrix trans, die ein vierseitiges Polygon quad auf ein Einheitsquadrat abbildet. Gibt true zurück, wenn die Transformation konstruiert ist, oder false, wenn eine solche Transformation nicht existiert.

Siehe auch squareToQuad() und quadToQuad().

void QTransform::reset()

Setzt die Matrix auf eine Identitätsmatrix zurück, d. h. alle Elemente werden auf Null gesetzt, außer m11 und m22 (Angabe der Skala) und m33, die auf 1 gesetzt werden.

Siehe auch QTransform(), isIdentity(), und Basic Matrix Operations.

[since 6.5] QTransform &QTransform::rotate(qreal a, Qt::Axis axis, qreal distanceToPlane)

Dreht das Koordinatensystem um den angegebenen Winkel a gegen den Uhrzeigersinn um den angegebenen axis im Abstand distanceToPlane vom Bildschirm und gibt einen Verweis auf die Matrix zurück.

Beachten Sie, dass, wenn Sie QTransform auf einen in Widget-Koordinaten definierten Punkt anwenden, die Richtung der Drehung im Uhrzeigersinn ist, da die y-Achse nach unten zeigt.

Der Winkel wird in Grad angegeben.

Wenn distanceToPlane gleich Null ist, wird er ignoriert. Dies eignet sich für die Implementierung orthographischer Projektionen, bei denen die z-Koordinate nicht projiziert, sondern fallen gelassen werden soll.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch setMatrix().

QTransform &QTransform::rotate(qreal a, Qt::Axis axis = Qt::ZAxis)

Dies ist eine überladene Funktion.

Dreht das Koordinatensystem um den angegebenen Winkel a gegen den Uhrzeigersinn um den angegebenen axis im Abstand 1024.0 vom Bildschirm und gibt eine Referenz auf die Matrix zurück.

Beachten Sie, dass, wenn Sie QTransform auf einen in Widget-Koordinaten definierten Punkt anwenden, die Richtung der Drehung im Uhrzeigersinn sein wird, da die y-Achse nach unten zeigt.

Der Winkel wird in Grad angegeben.

Siehe auch setMatrix.

[since 6.5] QTransform &QTransform::rotateRadians(qreal a, Qt::Axis axis, qreal distanceToPlane)

Dreht das Koordinatensystem um den angegebenen Winkel a gegen den Uhrzeigersinn um den angegebenen axis im Abstand distanceToPlane vom Bildschirm und gibt einen Verweis auf die Matrix zurück.

Beachten Sie, dass, wenn Sie QTransform auf einen in Widget-Koordinaten definierten Punkt anwenden, die Richtung der Drehung im Uhrzeigersinn ist, da die y-Achse nach unten zeigt.

Der Winkel wird in Radiant angegeben.

Wenn distanceToPlane gleich Null ist, wird er ignoriert. Dies eignet sich für die Implementierung orthographischer Projektionen, bei denen die z-Koordinate nicht projiziert, sondern fallen gelassen werden soll.

Diese Funktion wurde in Qt 6.5 eingeführt.

Siehe auch setMatrix().

QTransform &QTransform::rotateRadians(qreal a, Qt::Axis axis = Qt::ZAxis)

Dies ist eine überladene Funktion.

Dreht das Koordinatensystem um den angegebenen Winkel a gegen den Uhrzeigersinn um den angegebenen axis im Abstand 1024.0 vom Bildschirm und gibt eine Referenz auf die Matrix zurück.

Beachten Sie, dass, wenn Sie QTransform auf einen in Widget-Koordinaten definierten Punkt anwenden, die Richtung der Drehung im Uhrzeigersinn sein wird, da die y-Achse nach unten zeigt.

Der Winkel wird in Radiant angegeben.

Siehe auch setMatrix().

QTransform &QTransform::scale(qreal sx, qreal sy)

Skaliert das Koordinatensystem um sx horizontal und sy vertikal und gibt einen Verweis auf die Matrix zurück.

Siehe auch setMatrix().

void QTransform::setMatrix(qreal m11, qreal m12, qreal m13, qreal m21, qreal m22, qreal m23, qreal m31, qreal m32, qreal m33)

Setzt die Matrixelemente auf die angegebenen Werte, m11, m12, m13 m21 , m22, m23 m31 , m32 und m33. Beachten Sie, dass diese Funktion die vorherigen Werte ersetzt. QTransform bietet die Komfortfunktionen translate(), rotate(), scale() und shear(), um die verschiedenen Matrixelemente basierend auf dem aktuell definierten Koordinatensystem zu manipulieren.

Siehe auch QTransform().

QTransform &QTransform::shear(qreal sh, qreal sv)

Schert das Koordinatensystem um sh horizontal und sv vertikal und gibt einen Verweis auf die Matrix zurück.

Siehe auch setMatrix().

[static] bool QTransform::squareToQuad(const QPolygonF &quad, QTransform &trans)

Erstellt eine Transformationsmatrix, trans, die ein Einheitsquadrat auf ein vierseitiges Polygon, quad, abbildet. Gibt true zurück, wenn die Transformation konstruiert ist, oder false, wenn eine solche Transformation nicht existiert.

Siehe auch quadToSquare() und quadToQuad().

QTransform &QTransform::translate(qreal dx, qreal dy)

Verschiebt das Koordinatensystem dx entlang der x-Achse und dy entlang der y-Achse und gibt einen Verweis auf die Matrix zurück.

Siehe auch setMatrix().

QTransform QTransform::transposed() const

Gibt die Transponierung dieser Matrix zurück.

QTransform::TransformationType QTransform::type() const

Gibt den Transformationstyp dieser Matrix zurück.

Der Transformationstyp ist der höchste Aufzählungswert, der alle Transformationen der Matrix erfasst. Wenn die Matrix zum Beispiel sowohl skaliert als auch schert, wäre der Typ TxShear, da TxShear einen höheren Aufzählungswert hat als TxScale.

Die Kenntnis des Transformationstyps einer Matrix ist nützlich für die Optimierung: Sie können bestimmte Typen oft optimaler behandeln als den allgemeinen Fall.

QVariant QTransform::operator QVariant() const

Gibt die Transformation als QVariant zurück.

bool QTransform::operator!=(const QTransform &matrix) const

Gibt true zurück, wenn diese Matrix nicht gleich der angegebenen matrix ist, andernfalls gibt sie false zurück.

QTransform QTransform::operator*(const QTransform &matrix) const

Gibt das Ergebnis der Multiplikation dieser Matrix mit der angegebenen matrix zurück.

Beachten Sie, dass die Matrixmultiplikation nicht kommutativ ist, d. h. a*b != b*a.

QTransform &QTransform::operator*=(const QTransform &matrix)

Dies ist eine überladene Funktion.

Gibt das Ergebnis der Multiplikation dieser Matrix mit der angegebenen matrix zurück.

QTransform &QTransform::operator*=(qreal scalar)

Dies ist eine überladene Funktion.

Gibt das Ergebnis einer elementweisen Multiplikation dieser Matrix mit der angegebenen scalar zurück.

QTransform &QTransform::operator+=(qreal scalar)

Dies ist eine überladene Funktion.

Gibt die Matrix zurück, die durch Addition der angegebenen scalar zu jedem Element dieser Matrix erhalten wird.

QTransform &QTransform::operator-=(qreal scalar)

Dies ist eine überladene Funktion.

Gibt die Matrix zurück, die durch Subtraktion der angegebenen scalar von jedem Element dieser Matrix erhalten wird.

QTransform &QTransform::operator/=(qreal scalar)

Dies ist eine überladene Funktion.

Gibt das Ergebnis einer elementweisen Division dieser Matrix durch die angegebene scalar zurück.

[noexcept] QTransform &QTransform::operator=(const QTransform &matrix)

Weist die Werte der angegebenen matrix dieser Matrix zu.

bool QTransform::operator==(const QTransform &matrix) const

Gibt true zurück, wenn diese Matrix gleich der angegebenen matrix ist, andernfalls gibt sie false zurück.

Verwandte Nicht-Mitglieder

[noexcept] bool qFuzzyCompare(const QTransform &t1, const QTransform &t2)

Gibt true zurück, wenn t1 und t2 gleich sind, wobei ein kleiner Unschärfefaktor für Fließkomma-Vergleiche berücksichtigt wird; andernfalls false.

[noexcept] size_t qHash(const QTransform &key, size_t seed = 0)

Gibt den Hash-Wert für key zurück, wobei seed als Startwert für die Berechnung verwendet wird.

QLine operator*(const QLine &line, const QTransform &matrix)

Dies ist dasselbe wie matrix.map(line).

Siehe auch QTransform::map().

QLineF operator*(const QLineF &line, const QTransform &matrix)

Dies ist dasselbe wie matrix.map(line).

Siehe auch QTransform::map().

QPainterPath operator*(const QPainterPath &path, const QTransform &matrix)

Dies ist dasselbe wie matrix.map(path).

Siehe auch QTransform::map().

QPoint operator*(const QPoint &point, const QTransform &matrix)

Dies ist dasselbe wie matrix.map(point).

Siehe auch QTransform::map().

QPointF operator*(const QPointF &point, const QTransform &matrix)

Dasselbe wie matrix.map(point).

Siehe auch QTransform::map().

QPolygon operator*(const QPolygon &polygon, const QTransform &matrix)

Dies ist dasselbe wie matrix.map(polygon).

Siehe auch QTransform::map().

QPolygonF operator*(const QPolygonF &polygon, const QTransform &matrix)

Dies ist dasselbe wie matrix.map(polygon).

Siehe auch QTransform::map().

QRegion operator*(const QRegion &region, const QTransform &matrix)

Dies ist dasselbe wie matrix.map(region).

Siehe auch QTransform::map().

QDataStream &operator<<(QDataStream &stream, const QTransform &matrix)

Schreibt den angegebenen matrix in den angegebenen stream und gibt eine Referenz auf den Stream zurück.

Siehe auch Serialisierung von Qt-Datentypen.

QDataStream &operator>>(QDataStream &stream, QTransform &matrix)

Liest die angegebene matrix aus der angegebenen stream und gibt eine Referenz auf den 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.