Масштабирование QPolygon или QPolygonF - PullRequest
1 голос
/ 01 августа 2011

Мне нужно масштабировать многоугольник.

напишите следующее

Qt Code:

QPolygonF qpf=QPolygonF(QPolygon(4,points));
QTransform trans;
trans=trans.scale(1.5,1.5);
QPolygonF qpf2=trans.map(qpf);
path.addPolygon(qpf2);

для точек:

Qt Code:

  static const int points[8] = {
    10, 80,
    20, 10,
    80, 30,
    90, 70
    };

он генерирует --- 15,120-- --- 30,15-- --- 120,45-- --- 135,105 -

, поэтому он тоже немного двигается.

есть ли способ масштабирования от центра?например, начало формы должно быть в той же точке после масштабирования.Есть ли встроенный способ или я должен рассчитать все точки снова в масштабе?спасибо

1 Ответ

3 голосов
/ 01 августа 2011

В настоящее время вы применяете свою шкалу относительно координат в вашей системе координат "Мир". Что объясняет поведение, которое вы видите. Вы хотите применить их в локальной или «объектной» системе координат.

Чтобы добиться того, чего вы хотите, вам нужно перевести многоугольник так, чтобы его центр (или, как вы говорите, начало формы) был выровнен (или, скорее, «стал») источником вашей системы координат. Затем вы применяете желаемую шкалу, а затем применяете инверсию вашего первоначального перевода.

...