Название: QT 4.2.2 QPainter - рисование прямых Отправлено: evilguard от Февраль 26, 2007, 23:53 http://qtprojects.narod.ru/polygon.bmp
Привожу скриншот, там три ломаные, из них 2 с огрехами изображения, местами утолщена линия, хотя такого не должно быть(даже в painte такого не бывает, толщина линии остается постоянной). Третья линия, примерно такая, какая должна быть. Файл специально не сжимал, чтобы лучше видно было. Это проблема графического движка QT? Рисовал с помощью: Код:
добавлено спустя 3 минуты: Сразу говорю, дело не в моих точках, приближал до бесконечности эти прямые, та же самая ситуация, много косяков. Сравнил линии, построенные по тем же исходным данным программой на Дельфи, там все замечательно. Название: QT 4.2.2 QPainter - рисование прямых Отправлено: Alex03 от Февраль 27, 2007, 07:24 Анталиасинг виден.
И насколько длинные у Вас отрезки? Случайно не по поре пикселов (а то и меньше) длиной? Название: QT 4.2.2 QPainter - рисование прямых Отправлено: Dendy от Февраль 27, 2007, 07:52 В том то и дело, что нету там никакого антиалиасинга. Попробуй включить:
Код: painter->setRenderHint( QPainter::Antialiasing ); Название: QT 4.2.2 QPainter - рисование прямых Отправлено: evilguard от Февраль 27, 2007, 09:05 Вот именно, дело не в антиалиазинге, он мне не нужен. Возьмите в painte и начертите линию. Да, будут видны ступеньки, но не будет наложения кусочков линии друг на друга, то есть будет просто ступеньками, при любых улах наклона, а толщина линии останется постоянной. Это-то мне и нужно.
Просто есть пара аналогичных программ, функциональность которых похожа на мою. На тех же исходных данных они обе показывают нормальные линии, а QT - такие, смотрится грязно. добавлено спустя 13 минут: Dendy Включил антиалиазинг для пробы, намного лучше стало, исчезли эти самые косяки утолщения линий, хотя и появился антиалиазинг, который в принципе мне и не нужен. Скорее всего остановлюсь на этом варианте. Спасибо! [off]Можете еще ответить на мои вопросы в теме про Graphics Item, чуть ниже?[/off] Название: QT 4.2.2 QPainter - рисование прямых Отправлено: Alex03 от Февраль 27, 2007, 15:31 Цитата: "Dendy" В том то и дело, что нету там никакого антиалиасинга. А что по Вашему есть серенькие пикселы рядом с чёрными (при большом увеличении)? Название: QT 4.2.2 QPainter - рисование прямых Отправлено: Dendy от Февраль 27, 2007, 16:04 Серенькие пикселы появляются за счёт размытия картинки при её увеличении. Это эффект вашей программы просмотрщика. ACDSee к примеру таким балуется.
Вообще алгоритм "один пиксель на линию" применим только в тривиальных случаях. Далеко не каждый примитив можно так нарисовать. Например, что будет, если поставить толщину линии 1.5 да ещё и полупрозрачную? Методы рисования Qt универсальны и подходят для всех примитивов за счёт сглаживания. Без него - разве что линию да эллипс можно нарисовать. Название: QT 4.2.2 QPainter - рисование прямых Отправлено: evilguard от Февраль 27, 2007, 16:48 Dendy
Все понял, то есть надо антиалиазинг использовать постоянно. Все-таки можете ответить на мой вопрос, по QGraphicsItem? http://prog.org.ru/forum/topic_4338_474315ab5289380918306b56e8e143c7.html Название: QT 4.2.2 QPainter - рисование прямых Отправлено: Racheengel от Февраль 28, 2007, 01:50 не надо его постоянно использовать... вместо этого толщину линий целыми числами задавать.
1.5 пикселей... вот маразм... Название: QT 4.2.2 QPainter - рисование прямых Отправлено: noosooth от Февраль 28, 2007, 02:46 Цитата: "Racheengel" не надо его постоянно использовать... Полностью поддерживаю. Ежели толщина линии 1 px и антиалиасинг выключен, то либо Qt так заставили отрисовать (координаты точек, их порядок...), либо это bug. И лечить это дело антиалиасингом, особенно если он не нужен, не есть гуд. To evilguard: А можно взглянуть на кусочек кода который рисует самую левую линию (судя по Вашему bmp) или скажем на координаты точек? У троллей вообще-то были некоторые проблемы (http://prog.org.ru/forum/htopic_3426_.html) с отрисовкой линий в 4.1.4 под виндой. Может опять намудрили... Название: QT 4.2.2 QPainter - рисование прямых Отправлено: Alex03 от Февраль 28, 2007, 07:42 Цитата: "Dendy" Серенькие пикселы появляются за счёт размытия картинки при её увеличении. Это эффект вашей программы просмотрщика. ACDSee к примеру таким балуется. Да это я лоханулся. Смотрел оперой 9.01. В ней при увеличении видны чёткие квадратные пикселы, как самих линий, так и серенькие рядом. Похоже опера предварительно преобразует картинку, а при увеличении уже ничего не сглаживает. :( Ну а всякие ACDSee и прочие именно сглаживают при увеличении. Эт понятно. Поглядел паинтом. И всётаки, какой длины отрегки этих линий то? Название: QT 4.2.2 QPainter - рисование прямых Отправлено: evilguard от Февраль 28, 2007, 09:05 Racheengel
Кто сказал, толщину линий я 1.5 задавал? Код:
Название: QT 4.2.2 QPainter - рисование прямых Отправлено: Alex03 от Февраль 28, 2007, 17:28 Наверное хотели "for (int k=1; ..."
А чё выведет такой цикел? Код:
Название: QT 4.2.2 QPainter - рисование прямых Отправлено: evilguard от Февраль 28, 2007, 18:05 Alex03
Да, эту ошибочку я уже сегодня нашел). Цикел ничего не дает, кроме тормозов) Название: QT 4.2.2 QPainter - рисование прямых Отправлено: evilguard от Март 01, 2007, 23:23 Еще один глючок отыскал в QPaintere. Тоже связан с рисованием полигонов. Использую QPolygonF. Если рисовать так:
Код:
то все нормально. Если же делать по-нормальному: Код:
То появляются косячки на линиях. 2 рисунка, один с косяками, другой без: http://qtprojects.narod.ru/images.rar (308Кб) |