Масштабирование QPolygon или QPolygonF

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

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

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 ответ

Решение

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

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

Другие вопросы по тегам