У меня есть QGraphicsPolygonItem определяется как:проблема перевода при масштабировании объекта
myShape << QPointF(-50, -50) << QPointF(50, -50)
<< QPointF(50, 50) << QPointF(-50, 50)
<< QPointF(-50, -50);
mypolygon.setPolygon(myShape);
его стартовая матрица идентичности:
|---|---|---|
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 1 |
|---|---|---|
Когда я растянуть форму, чтобы удвоить ее размер с TransformationPivotVector = (-50,0) я получаю следующую матрицу:
матрицы после Масштаба:
|----|---|---|
| 2 | 0 | 0 |
| 0 | 1 | 0 |
| 50 | 0 | 1 |
|----|---|---|
Это означает, что центр формы был переведен на 50 единиц по оси X.
Теперь, если у меня есть форма, на которой в настоящее время имеется матрица после шкалы. Когда я намерен сжимать фигуру с помощью TransformationPivotVector = (50,0), перевод автоматически становится отрицательным, см., Например, когда я заключу только 0,01 формы :
|-------|---|---|
| 1.99 | 0 | 0 |
| 0 | 1 | 0 |
| -49.5 | 0 | 1 |
|-------|---|---|
Я использую следующую функцию, чтобы получить общую матрицу преобразования:
myShape->setTransform(QTransform().translate(transPivotVector.x(), transPivotVector.y()).rotate(rotation).scale(xFactor, yFactor).translate(-transPivotVector.x(),-transPivotVector.y()));
функция в основном получает окончательную матрицу из: перевести * * поворот шкалы * -translate.
Я предполагаю, что эта функция должна включать любой предыдущий перевод объекта, но я не знаю, как это сделать.
Пожалуйста, помогите мне!
Большое спасибо,
Carlos.