![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Cergey |
![]() ![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 62 Регистрация: 18.10.2008 Пользователь №: 395 Спасибо сказали: 3 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте!
Наверняка при изучении работы с 2D гдафикой видели следующий пример: Раскрывающийся текст
Рисование виджета начинается с маленького треугольника, который обозначает нулевую позицию вверху. Треугольник задается тремя, жестко зашитыми парами координат. Собственно рисование производится функцией drawConvexPolygon(). Треугольник можно было бы нарисовать функцией drawPolygon(), но если заранее известно, что многоугольник выпуклый, то вы можете сэкономить несколько микросекунд, за счет использования функции drawConvexPolygon(). Одна из замечательных сторон механизма перехода от логических координат к физическим состоит в том, что мы можем жестко зашивать координаты точек в исходный код и при этом получать неплохие результаты, при изменении размеров виджета.
Далее рисуются внешний и два внутренних круга. Внешний круг заполняется цветом "light" (обычно -- белый), Внутренние круги заполняются цветом "mid" (обычно -- серый).
Затем рисуются рукоятка и риски на лимбе. Напротив каждой пятой риски рисуется число, обозначающее количество минут. Функция rotate() вызывается для того, чтобы повернуть систему координат. В начальный момент, риска с отметкой "0" находилась вверху, теперь же она переместилась в точку, координаты которой зависят от оставшегося до срабатывания времени. Рукоятка рисуется после выполнения поворота, поскольку ее ориентация зависит от угла поворота. В цикле for, по краю внешнего круга рисуются риски, а под ними -- числа, обозначающие количество минут, с шагом 5. В конце каждой итерации выполняется поворот системы координат по часовой стрелке на 7 градусов, что соответствует одной минуте. Таким образом, каждая следующая риска будет рисоваться на своем месте, хотя координаты в drawLine() и drawText() задаются одни и те же. Мне не понятно
У Жасмин Бланшет написано про это: Сначала там поворачивают систему координат рисовальщика против часовой стрелки, затем рисуют рукоятку, а затем поворачивают рисовальщик по часовой стрелке и поэтому в цикле не надо изменять координаты в drawLine. Но ведь используется одна функция - rotate. Где не искал, везде ничего не исправлено. Если это правильно, может кто нибудь пожалуйста это объяснить!!! Сообщение отредактировал Litkevich Yuriy - 8.7.2009, 20:26
Причина редактирования: пользуйся тэгами code и expand
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 21.6.2025, 6:14 |