![]() |
|
|
![]()
|
|
| alammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.12.2012 Репутация: нет Всего: нет |
Здравствуйте! Объясните один момент:)
Qt 4.8.1, Ubuntu 12.04 Мне надо нарисовать X кружков, а потом соединить их линиями по некоторму алгоритму. Для рисования окружностей я использую painter.rotate(). А для того, чтобы потом иметь их координаты в общей системе влепил костыль на QTransform. Про QTransform прочитал вскользь в хелпах. Костыль заработал почти с 1 раза, но я теперь не понимаю как:) Вот кусок кода:
получается, что QTransform::map() преобразовывает текущие коор-ты матрицы сразу в начальные коор-ты (т.е. в систему с центром painter.translate(wid / 2, hei / 2); ), но в хелпе ничего на эту тему не нашел. Чего я не понимаю? Это сообщение отредактировал(а) alammer - 29.10.2014, 12:40 |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Зачем тебе вообще понадобились трансформации для рисования кругов вдоль окружности? Не проще было ручками посчитать координаты центров в зависимости от угла и радиуса?
Это сообщение отредактировал(а) Amp - 29.10.2014, 13:04 |
|||
|
||||
| alammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.12.2012 Репутация: нет Всего: нет |
за вычетом матрицы у меня на цикл рисования ушло около 2 минут
подскажите как проще/быстрее подсчитать координаты для произвольного количества окружностей? |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Умножать радиус на синус и косинус текущего угла, очевидно же.
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Все окружности рисуются одним пером и закрашиваются одной кистью?
Используй QPainterPath - вычисляется один раз, если изменилсь высота/ширина. Если цвета разные, для каждого цвета отдельный QPainterPath. С синусами и косинусами возиться не надо. Исплользуй QTransform. |
|||
|
||||
| alammer |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.12.2012 Репутация: нет Всего: нет |
всем спасибо, оказалось, что rotate QPainter-a и rotate Qtransformer-a по умолчанию вращают в противоположные стороны, отсюда и возникала необходимая компенсация
тему можно удалять |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |