Название: [Решено] Текст по кругу, QPainter Отправлено: andrew.k от Март 19, 2012, 13:23 Как нарисовать текст по кругу?
Задача - рисовать этикетку для диска. Текст должен быть по кругу. Название: Re: Текст по кругу Отправлено: kibsoft от Март 19, 2012, 13:30 http://qt-project.org/faq/answer/how_do_i_make_text_follow_the_line_curve_and_angle_of_the_qpainterpath
Название: Re: Текст по кругу Отправлено: andrew.k от Март 19, 2012, 13:39 http://qt-project.org/faq/answer/how_do_i_make_text_follow_the_line_curve_and_angle_of_the_qpainterpath Это я видел. Неужели нет проще решения?Название: Re: Текст по кругу Отправлено: andrew.k от Март 20, 2012, 10:26 Код по ссылке (с небольшими изменениями, сделал путь по кругу) дает такой результат.
Буквы скачут как попало. Название: Re: Текст по кругу Отправлено: Bepec от Март 20, 2012, 10:29 Кхм. а как ты хотел? в смысле чтобы их нижняя граница образовывала круг?
update: мб мне только кажется, но помоему у тебя просто угол поворота не в ту сторону направлен... Проще говоря они у тебя влево заваливаются, а должны вправо. Название: Re: Текст по кругу Отправлено: V1KT0P от Март 20, 2012, 10:37 Код по ссылке (с небольшими изменениями, сделал путь по кругу) дает такой результат. К кругу вроде как привязано нормально, но вот с поворотом букв где-то намудрил. Впечатление такое что либо не с того градуса начал рисовать, либо не с того градуса начал поворачивать буквы. Либо надо было по часовой а ты против часовой начал отрисовывать.Буквы скачут как попало. Название: Re: Текст по кругу Отправлено: V1KT0P от Март 20, 2012, 10:55 update: мб мне только кажется, но помоему у тебя просто угол поворота не в ту сторону направлен... Проще говоря они у тебя влево заваливаются, а должны вправо. Взял я тот алгоритм, короче либо он изначально был неправильный либо что-то изменилось в Qt. Ибо он неправильно работает.Название: Re: Текст по кругу Отправлено: andrew.k от Март 20, 2012, 10:58 Кхм. а как ты хотел? в смысле чтобы их нижняя граница образовывала круг? Спасибо, кэп.update: мб мне только кажется, но помоему у тебя просто угол поворота не в ту сторону направлен... Проще говоря они у тебя влево заваливаются, а должны вправо. Название: Re: Текст по кругу Отправлено: V1KT0P от Март 20, 2012, 11:35 Кхм. а как ты хотел? в смысле чтобы их нижняя граница образовывала круг? Спасибо, кэп.update: мб мне только кажется, но помоему у тебя просто угол поворота не в ту сторону направлен... Проще говоря они у тебя влево заваливаются, а должны вправо. Код Добавь эти строчки: Код У меня заработало нормально. Название: Re: Текст по кругу Отправлено: andrew.k от Март 20, 2012, 12:01 Виктор, спасибо огромное.
Получилось то, что надо. Правда не очень стройно. Кажется даже, что у тебя стройнее буквы идут) Остался один деффект. В нижней части круга, буквы идут выше линии. Но это не так уже важно, в общем Название: Re: Текст по кругу Отправлено: V1KT0P от Март 20, 2012, 12:19 Виктор, спасибо огромное. Не очень стройно по одной причине, ибо буква рисуется так, что точка находится в левом нижнем углу. А чтоб было ровно надо чтоб точка было посредине буквы, вот пример как можно пофиксить:Получилось то, что надо. Правда не очень стройно. Кажется даже, что у тебя стройнее буквы идут) Остался один деффект. В нижней части круга, буквы идут выше линии. Но это не так уже важно, в общем Код
А про то что нижние выше линии я даже не знаю почему. Скорее всего это что-то в функции отрисовки, ибо точка четко на линии. Название: Re: Текст по кругу Отправлено: andrew.k от Март 20, 2012, 12:50 А про то что нижние выше линии я даже не знаю почему. Скорее всего это что-то в функции отрисовки, ибо точка четко на линии. Я понял почему, это результат моих мытарств. Починил.Название: Re: Текст по кругу Отправлено: andrew.k от Март 20, 2012, 12:58 Теперь новая проблема, почему скачет жирность букв.
Добавляю такую строчку tran.rotate(rad,Qt::XAxis); жирность выравнивается, но буквы внизу уходят чуть выше. Убираю. Четко по кругу, но жирность скачет абы как. Название: Re: Текст по кругу Отправлено: V1KT0P от Март 20, 2012, 13:36 Теперь новая проблема, почему скачет жирность букв. Многое по рендеру текста зависит от самого шрифта. У меня извечная проблема подобрать и настроить шрифты под линуксом. Либо попробуй использовать другой шрифт. Либо рисуй в большем размере а затем уменьшай до нужного, только используй нормальные алгоритмы. Мне например нравится Lanczos3, но если ты будешь использовать увеличение кратное двойке, то пойдут и более простые и быстрые алгоритмы.Добавляю такую строчку tran.rotate(rad,Qt::XAxis); жирность выравнивается, но буквы внизу уходят чуть выше. Убираю. Четко по кругу, но жирность скачет абы как. Название: Re: Текст по кругу Отправлено: andrew.k от Март 20, 2012, 13:49 Виктор, огромное спасибо за помощь.
|