| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Размер QFont |
| Автор: math64 3.2.2013, 22:41 |
| Как задать высоту QFont, чтобы текст влез в заданный прямоугольник? |
| Автор: Amp 3.2.2013, 23:15 |
| http://forum.vingrad.ru/index.php?showtopic=351360&view=findpost&p=2486250 например |
| Автор: math64 4.2.2013, 07:49 | ||
Это под WinAPI. А мне нужно под Qt. Вывожу строку из одного символа. И обрезать межсторочный и межсимвольный интервал.
|
| Автор: Amp 4.2.2013, 10:36 |
Смысл тот же. Вычисляется прямоугольник в который вписывается текст для некоторого размера шрифта и потом подбирается коэфициент в соответствии с которым размер шрифта меняется. |
| Автор: math64 4.2.2013, 11:01 |
| Теоретически это понятно, но практически не работает - иначе бы не стал открывать тему. Приходится подбирать магические константы, которые при изменении размера окна уже не подходят. |
| Автор: Amp 4.2.2013, 11:33 | ||
Переписал быстренько на питоне, вроде как надо работает:
|
| Автор: math64 4.2.2013, 12:58 | ||
Мне почему-то приходится умножать высоту на 2 чтобы получилось правильно:
Вывод qDebug: 74 134 QRect(6,-131 47x184) QRect(9,-189 67x265) |
| Автор: Amp 4.2.2013, 13:59 |
| Ты карточную колоду что ли фонтами делаешь? |
| Автор: math64 4.2.2013, 14:16 |
| Да, на устройстве с чёрно-белым экраном - обычные PNG плохо смотрятся и масштабируются, а QPicture там нет. |
| Автор: Amp 4.2.2013, 16:50 |
| Так чего бы svg не взять? |
| Автор: math64 4.2.2013, 18:32 |
| svg там тем более нет - видно сразу - нет соответствующего заголовочного файла. Разве что взять исходники и откомпилировать самому. QGraphicsView тоже нет - сначала хотел просто QSoloCards перекомпилировать. |
| Автор: Amp 5.2.2013, 12:32 |
| Можешь сконвертировать символ в QPainterPath и работать уже как с вектором. Если выводить именно как текст, то скорее всего необходимо будет учитывать значения base/descender/ascender lines, bearing left/right и т.п., чтобы сделать все "впритык". И, возможно, для совсем уж pixel perfect подгонки алгоритм будет итерационным. |