Qt,设置QTransform的各个矩阵元素

时间:2015-08-07 18:34:32

标签: qt

有没有办法在QTransform中单独设置m_ij元素而不重新定义整个矩阵?

(例如,仅重置翻译部分)

1 个答案:

答案 0 :(得分:0)

您可以使用rotatescalesheartranslate操作间接更改相关元素。

如果您只想更改翻译,可以轻松地进行某些类型的转换。

void setTranslation(QTransform & t, qreal x, qreal y) {
  Q_ASSERT(t.type() != QTransform::TxRotate && t.type() != QTransform::TxShear && t.type() != QTransform::TxProject);

  x -= t.m31() / m11();
  y -= t.m32() / m22();
  t.translate(x, y);
}

但你必须明白,元素是相互作用的,并且"翻译"你设定的可能并不总是按照你的想法行事。