Название: Вопрос по QT QPainter::drawArc Отправлено: AlexEx от Январь 17, 2011, 13:54 Потребовалось вывести дугу и оказалось, что мои представления о параметрах метода QPainter::drawArc не совпадают с полученными результатами. Мануал говорит, что получаемая дуга - часть эллипса, вписанного в прямоугольник, а начальный угол дуги и ее длина задаются в градусах, помноженных на 16. 0-й угол соответствует 3-м часам. Ниже - метод, выводящий по задумке дугу эллипса длиной 90 градусов, начиная с 45-го градуса (на аттаче - зеленого цвета). Видно, однако, что и начальный угол - не 45, и длина дуги - не 90. Поэтому, вопрос - это bug QT или моя неправильная интерпретация?
Код: void paintEvent(QPaintEvent *event) Название: Re: Вопрос по QT QPainter::drawArc Отправлено: kamre от Январь 17, 2011, 19:57 Видно, однако, что и начальный угол - не 45, и длина дуги - не 90. Поэтому, вопрос - это bug QT или моя неправильная интерпретация? Скорее всего для эллипса используется параметризация x=a*cos(t), y=b*sin(t). И под "углами" имеются ввиду значения параметра t. Для настоящих углов измеряемых относительно оси OX нужно пересчитывать занчения этих углов в значения для параметра t.Название: Re: Вопрос по QT QPainter::drawArc Отправлено: Igors от Январь 17, 2011, 20:10 Нормальный результат, т.к. width / height (для rct) 2:1
Название: Re: Вопрос по QT QPainter::drawArc Отправлено: Ubuntu_linux от Январь 17, 2011, 22:24 Нормальный результат, т.к. width / height (для rct) 2:1 Действительно, все в порядке! Будет так как хочется когда будет квадрат.Название: Re: Вопрос по QT QPainter::drawArc Отправлено: AlexEx от Январь 18, 2011, 10:14 Почему это происходит и как с этим бороться, это все понятно. Вопрос в том, что это - QT bug, который будет исправлен со временем (текущая реализация определенно вызывает вопросы), или это фича by design и на такое поведение можно полагаться и в дальнейшем. Похоже, надо прямо спрашивать QT-шную команду :).
Название: Re: Вопрос по QT QPainter::drawArc Отправлено: kamre от Январь 18, 2011, 14:40 Вопрос в том, что это - QT bug, который будет исправлен со временем (текущая реализация определенно вызывает вопросы), или это фича by design и на такое поведение можно полагаться и в дальнейшем. В Java2D и System.Drawing.Graphics такое же поведение при рисовании дуг, так что это скорее "фича by design".Название: Re: Вопрос по QT QPainter::drawArc Отправлено: AlexEx от Январь 18, 2011, 15:02 Цитировать В Java2D и System.Drawing.Graphics такое же поведение при рисовании дуг, так что это скорее "фича by design". Спасибо. Собственно это и хотелось прояснить. Видимо, так принято считать углы для дуг. Хотел было сам попробовать на GDI+, но коль System.Drawing.Graphics делает также, то и пробовать нечего. |