crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QPainter, QTransform и координаты
alammer
  опции профиля:
сообщение 29.10.2014, 11:46
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 29.10.2014
Пользователь №: 4261

Спасибо сказали: 0 раз(а)




Репутация:   0  


Здравствуйте! Объясните один момент:)

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); ), но в хелпе ничего на эту тему не нашел. Чего я не понимаю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 4:43