DrawText

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

DrawText

Сообщение tria » 27.07.2012 18:07:09

Нужно узнать высоту выводимого текста с учетом переноса слов.
Пока что нашел только DrawText.
Вопрос: есть ли кроссплатформенное решение данной задачи? (в дальнейшем проект будет работать и в Линуксе)
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: DrawText

Сообщение hinst » 27.07.2012 20:55:09

TCanvas.TextHeight
перенос слов? ХЗ
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: DrawText

Сообщение Timid » 28.07.2012 13:52:40

Подбирайте количество слов в строке, подсчитывая размер строки в пикселях.

Общая схема такая:
В цикле ищете разделитель (пробел, запятая, перенос, точка, #10 и прочее), найдя, вычисляете через textwidth ширину текста.
Как только выйдите за границу отведенного блока, отрезаете начало и повторяете цикл для оставшейся части строки.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: DrawText

Сообщение tria » 29.07.2012 14:53:16

Timid писал(а):Подбирайте количество слов в строке, подсчитывая размер строки в пикселях.

Общая схема такая:
В цикле ищете разделитель (пробел, запятая, перенос, точка, #10 и прочее), найдя, вычисляете через textwidth ширину текста.
Как только выйдите за границу отведенного блока, отрезаете начало и повторяете цикл для оставшейся части строки.

Мысль понял...
Суровенько...
Боюсь, что может дать затык по скорости - в грид вывожу результат запроса...
Я как-то надеялся, что есть что-то встроенное...
tria
постоялец
 
Сообщения: 401
Зарегистрирован: 03.04.2006 11:24:10

Re: DrawText

Сообщение Brainenjii » 29.07.2012 14:57:50

Есть TextRect - выводит текст в ограниченный rect. Можно задать нужную ширину и довольно большую высоту, затем по scanline'ом найти место где начинаются пустые линии и обрезать - это и будет нужная ширина...
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Re: DrawText

Сообщение Ask » 31.07.2012 19:35:22

Для расчёта -- LCLIntf.GetTextExtentExPoint
Для вывода -- TCanvas.TextRect с нужным TextStyle
Ask
постоялец
 
Сообщения: 163
Зарегистрирован: 25.12.2008 03:51:37


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 237

Рейтинг@Mail.ru