Нужно узнать высоту выводимого текста с учетом переноса слов.
Пока что нашел только DrawText.
Вопрос: есть ли кроссплатформенное решение данной задачи? (в дальнейшем проект будет работать и в Линуксе)
DrawText
Модератор: Модераторы
TCanvas.TextHeight
перенос слов? ХЗ
перенос слов? ХЗ
Подбирайте количество слов в строке, подсчитывая размер строки в пикселях.
Общая схема такая:
В цикле ищете разделитель (пробел, запятая, перенос, точка, #10 и прочее), найдя, вычисляете через textwidth ширину текста.
Как только выйдите за границу отведенного блока, отрезаете начало и повторяете цикл для оставшейся части строки.
Общая схема такая:
В цикле ищете разделитель (пробел, запятая, перенос, точка, #10 и прочее), найдя, вычисляете через textwidth ширину текста.
Как только выйдите за границу отведенного блока, отрезаете начало и повторяете цикл для оставшейся части строки.
Timid писал(а):Подбирайте количество слов в строке, подсчитывая размер строки в пикселях.
Общая схема такая:
В цикле ищете разделитель (пробел, запятая, перенос, точка, #10 и прочее), найдя, вычисляете через textwidth ширину текста.
Как только выйдите за границу отведенного блока, отрезаете начало и повторяете цикл для оставшейся части строки.
Мысль понял...
Суровенько...
Боюсь, что может дать затык по скорости - в грид вывожу результат запроса...
Я как-то надеялся, что есть что-то встроенное...
- Brainenjii
- энтузиаст
- Сообщения: 1351
- Зарегистрирован: 10.05.2007 00:04:46
Есть TextRect - выводит текст в ограниченный rect. Можно задать нужную ширину и довольно большую высоту, затем по scanline'ом найти место где начинаются пустые линии и обрезать - это и будет нужная ширина...
Для расчёта -- LCLIntf.GetTextExtentExPoint
Для вывода -- TCanvas.TextRect с нужным TextStyle
Для вывода -- TCanvas.TextRect с нужным TextStyle
