Здравствуйте! Объясните один момент:)
Qt 4.8.1, Ubuntu 12.04
Мне надо нарисовать X кружков, а потом соединить их линиями по некоторму алгоритму. Для рисования окружностей я использую painter.rotate(). А для того, чтобы потом иметь их координаты в общей системе влепил костыль на QTransform. Про QTransform прочитал вскользь в хелпах. Костыль внезапно заработал почти с 1 раза, но я теперь не понимаю как:) Вот кусок кода:
QPainter painter(this);
painter.translate(wid / 2, hei / 2); // переместились в центр окна
recsize = 10;//tplist[ap0].remac.size(); //количество кружков
rot = 360 / recsize;
painter.save();
for (int i = 0; i < recsize; i++)
{
if (i > 0)painter.rotate(rot);
br.setColor(Qt::green);
painter.setPen(Qt::NoPen);
painter.setBrush(br);
cent = QPoint::QPoint(0, -hei*0.375); //центр окружности в тек. координатах (после rotate())
painter.drawEllipse(cent, hei/30, hei/30);
QTransform mytrans;
mytrans.rotate(rot*i);
QPoint trpp = QPoint::QPoint(0,-hei*0.375); //это координаты центра текущей окружности в текущих координатах
QPoint trpOLD = mytrans.map(trpp); // в trpOLD оказывается тот же самый центр но уже в начальных координатах !!!
}
получается, что QTransform::map() преобразовывает текущие коор-ты матрицы сразу в начальные коор-ты (т.е. в систему с центром painter.translate(wid / 2, hei / 2); ), но в хелпе ничего на эту тему не нашел. Чего я не понимаю?