2011-12-15 2 views
0

У меня есть один вопрос для всех, касающийся масштабирования QGraphicsPolygonItem.QGraphicsPolygonItem шкала от верхнего левого

У меня есть полигон (внутри QGraphicsPolygonItem):

QPolygonF p1; 
p1 << QPointF(-4, 32) << QPointF(-4, -32) << QPointF(4, -32) << QPointF(4, 32); 
//or 
//p1 << QPointF(0, 0) << QPointF(8, 0) << QPointF(8, 64) << QPointF(0, 64); 
//whatever, they both doesn't work correctly. 

Затем я пытаюсь масштабировать (setScale (2)) и Polygon начинают масштабироваться от центральной точки, а не сверху, слева. Я прочитал документацию о масштабировании Qt и исходных точках, но никакого эффекта. Для целей тестирования у меня есть правильный полигон для прямоугольника, который работает правильно.

Как масштабировать многоугольник сверху, влево?

Нет шкалы (многоугольник красный, прямоугольник черный): setScale(1) http://forum.sources.ru/uploads/post-10-1323844540-0.png

с масштабом x2: setScale(2) http://forum.sources.ru/uploads/post-10-1323844540-1.png

Спасибо за любую помощь

ответ

0

Что вам нужно не является setTransformOriginPoint:

Устанавливает исходную точку для преобразования координат элемента.

+0

setTransformOriginPoint не решает эту проблему, потому что это изменение только начальной точки для преобразования (от центра до вершины, слева). Как вы можете видеть на рисунке 2 (масштаб x2) проблема заключается в перекрытии многоугольника после масштабирования. Чтобы предотвратить эту необходимость использования перевода (возможно). Мне нужно после масштабирования: 1. Масштабировать многоугольник, 2. масштабировать его положение X, Y (например, для черного прямоугольника на рисунке 2). – Dmitry