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 |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QTransform ist Teil von Painting Classes.
Ö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 ®ion) 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) |
Verwandte Nicht-Mitglieder
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 ®ion, 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
Konstante | Wert |
---|---|
QTransform::TxNone | 0x00 |
QTransform::TxTranslate | 0x01 |
QTransform::TxScale | 0x02 |
QTransform::TxRotate | 0x04 |
QTransform::TxShear | 0x08 |
QTransform::TxProject | 0x10 |
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 ®ion) 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 ®ion, 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.