このページでは

QTransform Class

QTransform クラスは、座標系の 2 次元変換を定義します。詳細...

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

パブリック型

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

パブリック関数

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)
QTransform(const QTransform &other)
QTransform(QTransform &&other)
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
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=(QTransform &&other)
QTransform &operator=(const QTransform &matrix)
bool operator==(const QTransform &matrix) const

静的パブリックメンバー

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)

詳細な説明

変換は、座標系の並進、拡大縮小、せん断、回転、投影の方法を指定するもので、通常、グラフィックスのレンダリングに使用されます。

QTransform オブジェクトは、setMatrix()、scale()、rotate()、translate()、およびshear() 関数を使用して作成できます。あるいは、basic matrix operations を適用して作成することもできます。行列は構築時に定義することもでき、reset() 関数を使用して単位行列(デフォルト)にリセットすることもできます。

QTransformクラスは、グラフィックプリミティブのマッピングをサポートしています。map()関数を使用すると、指定された点、線、多角形、領域、またはペインターパスを、この行列によって定義された座標系にマッピングすることができます。矩形の場合、mapRect()関数を使用してその座標を変換することができます。 また、mapToPolygon() 関数を使用することで、矩形を多角形に変換(この行列によって定義された座標系にマッピング)することもできます。

QTransformは、行列が単位行列である場合にtrue を返すisIdentity()関数と、行列が非特異(すなわちAB = BA = I)である場合にtrue を返すisInvertible()関数を提供します。inverted() 関数は、行列が可逆である場合にその逆行列を返し(そうでない場合は単位行列を返す)、adjoint() は行列の古典的な随伴行列を返します。さらに、QTransform クラスは、行列の行列式を返すdeterminant() 関数を提供しています。

最後に、QTransformクラスは行列の乗算、加算、減算をサポートしており、このクラスのオブジェクトはストリーム処理や比較を行うこともできます。

グラフィックスの描画

グラフィックスのレンダリングにおいて、行列は変換を定義しますが、実際の変換はQPainter 内の描画ルーチンによって実行されます。

デフォルトでは、QPainter は関連付けられたデバイス独自の座標系で動作します。QPaintDevice の標準座標系では、原点は左上に位置します。x値は右に向かって増加し、y値は下に向かって増加します。詳細については、座標系のドキュメントを参照してください。

QPainter には、QTransformを使用せずに座標系を平行移動、拡大縮小、せん断、回転させる関数が用意されています。例:

テキストが45度回転しています
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");
}

これらの関数は非常に便利ですが、複数の変換操作を実行したい場合は、QTransformを作成してQPainter::setTransform()を呼び出す方が効率的である場合があります。例:

テキストの拡大・縮小、回転、平行移動
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");
}

基本的な行列演算

各行が異なる要素からなる3×3の行列を含むオブジェクトを示した図

QTransformオブジェクトには3×3の行列が含まれています。m31 (dx) およびm32 (dy) の要素は、水平および垂直方向の平行移動を指定します。m11 およびm22 の要素は、水平および垂直方向のスケーリングを指定します。m21 およびm12 の要素は、水平および垂直方向のせん断を指定します。そして最後に、m13 およびm23 の要素は、水平および垂直方向の投影を指定し、m33 が追加の投影係数として機能します。

QTransform は、以下の式を用いて、平面上の点を別の点に変換します。

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

点(x, y)は元の点であり、(x', y')は変換後の点です。(x', y')は、inverted() 行列に対して同じ演算を行うことで、(x, y)に戻すことができます。

各行列要素は、行列の構築時に設定することも、後でsetMatrix()関数を使用して設定することもできます。また、translate()、rotate()、scale()、shear()といった便利関数を使用して操作することも可能です。 現在設定されている値は、m11()、m12()、m13()、m21()、m22()、m23()、m31()、m32()、m33()、dx()、およびdy() 関数を使用して取得できます。

平行移動は最も単純な変換です。dx およびdy を設定すると、座標系が X 軸方向にdx 単位、Y 軸方向にdy 単位だけ移動します。拡大縮小は、m11 およびm22 を設定することで行えます。例えば、m11 を 2、m22 を 1.5 に設定すると、高さが 2 倍になり、幅が 50% 増加します。 単位行列では、m11 、m22 、およびm33 が1に設定され(その他はすべて0に設定される)、点をそれ自体に写像します。せん断は、m12 およびm21 によって制御されます。これらの要素を0以外の値に設定すると、座標系がねじれます。回転は、せん断係数とスケーリング係数の両方を設定することで実現されます。 透視変換は、投影係数とスケーリング係数の両方を設定することで実現されます。

変換の組み合わせ

以下は、基本的な行列演算を用いた変換の組み合わせの例です:

行列変換が組み合わされたテキスト
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");
}

合成変換は、まず各オペランドをスケーリングし、次に回転させ、最後に並進させます。これは、その因子の積が記述される順序とまったく同じです。つまり、変換が適用される点は、暗黙的にその右側にある変換と左から掛け合わされることになります。

行列表記との関係

QTransformにおける行列表記は、変換や点を行列やベクトルとして表す一般的な慣例とは逆の順序となっています。その慣例では、行列の左側と右側の列ベクトルが掛け合わされます。つまり、ある点に複数の変換が適用される場合、最も右側にある行列が最初にそのベクトルに直接作用します。 その後、左隣の行列が最初の演算の結果に対して作用し、以下同様に続きます。その結果、Combining Transforms で確認できるように、この表記法では、複合変換を構成する行列の乗算順序が QTransform とは逆になります。 行列を転置し、点を表す行ベクトルの右側にそれらを組み合わせることで、行列の積において、その点に変換が適用される順序通りに変換行列が現れるようになります。

QPainter 、座標系、アフィン変換の例、および変換の例も参照してください 。

メンバー型のドキュメント

enum QTransform::TransformationType

定数定数
QTransform::TxNone0x00
QTransform::TxTranslate0x01
QTransform::TxScale0x02
QTransform::TxRotate0x04
QTransform::TxShear0x08
QTransform::TxProject0x10

メンバ関数のドキュメント

QTransform::QTransform()

単位行列を作成します。

m11 、m22 (スケールを指定する)、およびm33 を除くすべての要素は0に設定され、これら3つの要素は1に設定されます。

reset()も参照してください 。

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

m11 、m12 、m21 、m22 、dx 、dy という要素を持つ行列を構築します。

setMatrix()も参照してください 。

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

m11 、m12 、m13 、m21 、m22 、m23 、m31 、m32 、m33 という要素を持つ行列を構築します。

setMatrix()も参照してください 。

[constexpr noexcept default] QTransform::QTransform(const QTransform &other)

QTransform のインスタンスをコピーして生成します。

[constexpr noexcept default] QTransform::QTransform(QTransform &&other)

QTransform のインスタンスをMoveコンストラクタで生成します。

qreal QTransform::m11() const

水平方向のスケーリング係数を返します。

scale() およびBasic Matrix Operationsも参照してください 。

qreal QTransform::m12() const

垂直せん断係数を返します。

shear() およびBasic Matrix Operationsも参照してください 。

qreal QTransform::m13() const

水平投影係数を返します。

translate() およびBasic Matrix Operationsも参照してください 。

qreal QTransform::m21() const

水平せん断係数を返します。

shear() およびBasic Matrix Operationsも参照してください 。

qreal QTransform::m22() const

垂直方向のスケーリング係数を返します。

scale() およびBasic Matrix Operationsも参照してください 。

qreal QTransform::m23() const

垂直投影係数を返します。

translate() およびBasic Matrix Operationsも参照してください 。

qreal QTransform::m31() const

水平方向の並進係数を返します。

dx()、translate()、およびBasic Matrix Operationsも参照してください 。

qreal QTransform::m32() const

垂直方向の並進係数を返します。

dy()、translate()、およびBasic Matrix Operationsも参照してください 。

qreal QTransform::m33() const

除数係数を返します。

translate() およびBasic Matrix Operationsも参照してください 。

QTransform QTransform::adjoint() const

この行列の随伴行列を返します。

qreal QTransform::determinant() const

行列の行列式を返します。

qreal QTransform::dx() const

水平方向の並進係数を返します。

m31()、translate()、およびBasic Matrix Operationsも参照してください 。

qreal QTransform::dy() const

垂直方向の並進係数を返します。

translate() およびBasic Matrix Operationsも参照してください 。

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

sx の水平方向、sy の垂直方向のスケーリングに対応する行列を作成します。これはQTransform().scale(sx, sy)と同じですが、わずかに高速です。

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

dx をx軸に沿って、dy をy軸に沿って平行移動させたものに対応する行列を作成します。これはQTransform().translate(dx, dy)と同じですが、わずかに高速です。

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

この行列の逆行列を返します。

行列が特異(可逆でない)場合、返される行列は単位行列となります。invertible が有効(つまり0以外)である場合、行列が可逆であればその値はtrueに、そうでなければfalseに設定されます。

isInvertible()も参照してください 。

bool QTransform::isAffine() const

行列がアフィン変換を表す場合は `true ` を返し、そうでない場合は `false` を返します。

bool QTransform::isIdentity() const

行列が単位行列である場合は `true ` を返し、それ以外の場合は `false` を返します。

reset()も参照してください 。

bool QTransform::isInvertible() const

行列が可逆であれば `true ` を返し、そうでない場合は `false` を返します。

inverted()も参照してください 。

bool QTransform::isRotating() const

行列が何らかの回転変換を表す場合は `true ` を返し、そうでない場合は `false` を返します。

注: 180度および/または360度の回転変換は 、拡大縮小変換として扱われます。

reset()も参照してください 。

bool QTransform::isScaling() const

行列がスケーリング変換を表す場合は `true ` を返し、それ以外の場合は `false` を返します。

reset()も参照してください 。

bool QTransform::isTranslating() const

行列が並進変換を表す場合は `true ` を返し、それ以外の場合は `false` を返します。

reset()も参照してください 。

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

指定された座標 `x ` および `y ` を、この行列によって定義される座標系に変換します。変換結果の値は、それぞれ `*tx ` および `*ty` に格納されます。

座標の変換には、以下の式が使用されます:

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

点 (x, y) は元の点、(x', y') は変換後の点です。

Basic Matrix Operationsも参照してください 。

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

指定された線分(l )を、この行列によって定義される座標系にマッピングしたコピーであるQLineF オブジェクトを作成して返します。

これはオーバーロードされた関数です。

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

指定された `line` のコピーであり、この行列によって定義された座標系に変換された `QLine ` オブジェクトを作成して返します。変換後の座標は、最も近い整数に丸められることに注意してください。

これはオーバーロードされた関数です。

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

指定されたpath のコピーであり、この行列によって定義された座標系にマッピングされたQPainterPath オブジェクトを作成して返します。

これはオーバーロードされた関数です。

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

指定された `point` のコピーであり、この行列によって定義された座標系に変換された `QPoint ` オブジェクトを作成して返します。変換後の座標は、最も近い整数に丸められますのでご注意ください。

これはオーバーロードされた関数です。

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

指定された点 `p` のコピーであり、この行列によって定義される座標系にマッピングされた `QPointF ` オブジェクトを作成して返します。

これはオーバーロードされた関数です。

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

指定された `polygon` のコピーであり、この行列で定義された座標系に変換された `QPolygon ` オブジェクトを作成して返します。変換後の座標は、最も近い整数に丸められますのでご注意ください。

これはオーバーロードされた関数です。

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

指定されたpolygon のコピーであり、この行列によって定義された座標系にマッピングされたQPolygonF オブジェクトを作成して返します。

これはオーバーロードされた関数です。

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

指定されたregion のコピーであり、この行列によって定義された座標系にマッピングされたQRegion オブジェクトを作成して返します。

回転やせん断が使用されている場合、このメソッドの呼び出しにはかなりの計算コストがかかることがあります。

これはオーバーロードされた関数です。

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

指定された座標 `x ` および `y ` を、この行列によって定義される座標系に変換します。変換後の値は、それぞれ `*tx ` および `*ty` に格納されます。変換後の座標は、最も近い整数に丸められることに注意してください。

これはオーバーロードされた関数です。

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

指定されたrectangle のコピーであり、この行列によって定義された座標系に変換されたQRectF オブジェクトを作成して返します。

矩形の座標は、以下の式を用いて変換されます。

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

回転やせん断が指定されている場合、この関数は境界矩形を返します。指定されたrectangle がマッピングされる正確な領域を取得するには、代わりにmapToPolygon()関数を使用してください。

mapToPolygon() およびBasic Matrix Operationsも参照してください 。

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

指定された `rectangle` のコピーであり、この行列によって定義された座標系に変換された `QRect ` オブジェクトを作成して返します。変換後の座標は、最も近い整数に丸められますのでご注意ください。

これはオーバーロードされた関数です。

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

指定されたrectangle を、この行列によって定義される座標系にマッピングしたQPolygon 表現を作成して返します。

矩形の座標は、以下の式を用いて変換されます。

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

多角形と矩形は、変換時の挙動が(整数の丸め処理により)わずかに異なるため、matrix.map(QPolygon(rectangle)) は必ずしもmatrix.mapToPolygon(rectangle) と一致するとは限りません。

mapRect() およびBasic Matrix Operationsも参照してください 。

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

4辺の多角形 `one` を別の4辺の多角形 `two` に写像する変換行列 `trans` を作成します。変換が可能な場合は `true ` を返し、そうでない場合は `false` を返します。

これは、quadToSquare() メソッドとsquareToQuad() メソッドを組み合わせた便利なメソッドです。これにより、入力された四角形を任意の他の四角形に変換することができます。

squareToQuad() およびquadToSquare()も参照してください 。

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

4辺の多角形quad を単位正方形に写像する変換行列trans を作成します。変換が構築された場合はtrue を返し、そのような変換が存在しない場合は false を返します。

squareToQuad() およびquadToQuad()も参照してください 。

void QTransform::reset()

行列を単位行列にリセットします。つまり、m11 、m22 (スケールを指定する)およびm33 を除くすべての要素がゼロに設定され、これら3つの要素は1に設定されます。

QTransform()、isIdentity()、およびBasic Matrix Operationsも参照してください 。

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

指定された角度 `a ` だけ、画面から距離 `distanceToPlane ` の位置にある指定された点 `axis ` を軸として座標系を反時計回りに回転させ、行列への参照を返します。

なお、ウィジェット座標で定義された点にQTransform を適用する場合、y軸は下向きであるため、回転方向は時計回りになります。

角度は度単位で指定します。

distanceToPlane が 0 の場合は、無視されます。これは、z 座標を投影するのではなく削除すべき正射影を実装するのに適しています。

この関数は Qt 6.5 で導入されました。

setMatrix()も参照してください 。

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

指定された角度a だけ、画面から距離1024.0にある指定されたaxis を中心に座標系を反時計回りに回転させ、行列への参照を返します。

なお、ウィジェット座標で定義された点にQTransform を適用する場合、y軸は下向きであるため、回転の方向は時計回りになります。

角度は度単位で指定します。

これはオーバーロードされた関数です。

setMatrixも参照してください 。

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

指定された角度a だけ、画面から距離distanceToPlane の位置にある指定されたaxis を中心に座標系を反時計回りに回転させ、行列への参照を返します。

なお、ウィジェット座標で定義された点にQTransform を適用する場合、y軸は下向きであるため、回転方向は時計回りになります。

角度はラジアン単位で指定します。

distanceToPlane が 0 の場合、この引数は無視されます。これは、z 座標を投影せずに省略する正投影を実装するのに適しています。

この関数は Qt 6.5 で導入されました。

setMatrix()も参照してください 。

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

指定された角度a だけ、画面から距離1024.0の位置にある指定されたaxis を中心に座標系を反時計回りに回転させ、行列への参照を返します。

なお、ウィジェット座標で定義された点にQTransform を適用する場合、y軸が下向きであるため、回転方向は時計回りになります。

角度はラジアン単位で指定します。

これはオーバーロードされた関数です。

setMatrix()も参照してください 。

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

座標系を、水平方向にsx 、垂直方向にsy の倍率で拡大・縮小し、行列への参照を返します。

setMatrix()も参照してください 。

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

行列要素を、指定された値(m11 、m12 、m13 、m21 、m22 、m23 、m31 、m32 、およびm33 )に設定します。この関数は、以前の値を上書きすることに注意してください。QTransform には、現在定義されている座標系に基づいてさまざまな行列要素を操作するための、translate()、rotate()、scale()、およびshear() という便利関数が用意されています。

QTransform()も参照してください 。

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

座標系を、水平方向にsh 、垂直方向にsv の比率でせん断し、行列への参照を返します。

setMatrix()も参照してください 。

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

単位正方形を四辺形(quad )に写像する変換行列 `trans` を作成します。変換が構築された場合は `true ` を返し、そのような変換が存在しない場合は `false` を返します。

quadToSquare() およびquadToQuad()も参照してください 。

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

座標系をx軸方向にはdx 、y軸方向にはdy だけ移動させ、その行列への参照を返します。

setMatrix()も参照してください 。

QTransform QTransform::transposed() const

この行列の転置を返します。

QTransform::TransformationType QTransform::type() const

この行列の変換タイプを返します。

変換タイプとは、その行列のすべての変換を網羅する最も大きな列挙値のことです。たとえば、行列が拡大・縮小とせん断の両方を行っている場合、タイプはTxShear となります。これは、TxShear の列挙値がTxScale よりも大きいためです。

行列の変換タイプを把握することは、最適化に役立ちます。多くの場合、一般的なケースを扱うよりも、特定のタイプを扱う方がより最適に処理できるからです。

QTransform::operator QVariant() const

トランスフォームをQVariant として返します。

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

この行列が指定されたmatrix と等しくない場合はtrue を返し、等しい場合はfalse を返します。

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

この行列と指定されたmatrix を乗算した結果を返します。

なお、行列の乗算は可換ではないことに注意してください。つまり、a*b ≠ b*a です。

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

この行列と指定されたmatrix を乗算した結果を返します。

これはオーバーロードされた関数です。

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

この行列と指定されたscalar との要素ごとの乗算を行った結果を返します。

これはオーバーロードされた関数です。

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

この行列の各要素に、指定されたscalar を加算して得られた行列を返します。

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

この行列の各要素から、指定されたscalar を引いた結果の行列を返します。

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

この行列に対して、指定されたscalar を用いて要素ごとの除算を行った結果を返します。

[noexcept default] QTransform &QTransform::operator=(QTransform &&other)

other をこのQTransform インスタンスに割り当てます。

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

指定されたmatrix の値を、この行列に割り当てます。

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

この行列が指定されたmatrix と等しい場合はtrue を返し、そうでない場合はfalse を返します。

関連する非メンバ関数

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

t1 とt2 が等しい場合、浮動小数点数の比較におけるわずかな許容誤差を考慮した上で、true を返します。それ以外の場合は false を返します。

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

`key` のハッシュ値を返します。計算のシードには `seed ` を使用します。

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

これは、matrix.map(line) と同じです。

QTransform::map()も参照してください 。

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

これは、matrix.map(line) と同じです。

QTransform::map()も参照してください 。

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

これは、matrix.map(path) と同じです。

QTransform::map()も参照してください 。

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

これは、matrix.map(point) と同じです。

QTransform::map()も参照してください 。

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

matrix.map(point) と同じです。

QTransform::map( )も参照してください 。

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

これは、matrix.map(polygon) と同じです。

QTransform::map()も参照してください 。

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

これは、matrix.map(polygon) と同じです。

QTransform::map()も参照してください 。

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

これは、matrix.map(region) と同じです。

QTransform::map()も参照してください 。

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

指定されたmatrix を、指定されたstream に書き込み、そのストリームへの参照を返します。

「Qt データ型のシリアライズ」も参照してください 。

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

指定された `stream ` から指定された `matrix ` を読み込み、そのストリームへの参照を返します。

「Qtデータ型のシリアル化」も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.