![]() |
Показать все 5 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Алгоритм выравнивания текста по ширине (https://hlfx.ru/forum/showthread.php?threadid=3673)
Алгоритм выравнивания текста по ширине
Интересует субж, как грамотно реализовать алгоритм?
в голову приходит: вычеслить допустимую длину которую можно отрисовать на строку, например длина блока 300 пикселей, длина символов 312,
далее обрезать в меньшую сторону по количеству слов, удалить пробелы заодно подсчитав их, вычтить из 300пикселей пробелы*ширина пробела,
вычеслить оступ = остаток разделить на количество слов-1, рисовать слово оступ и т.д.
Есть попроще вариант?
__________________
vk.com/skullcapstudios
Птьхы, странный какой.
Размер текстового поля ВСЕГДА известен заранее, причём он измеряется в тех же величинах, что и ширина буков. Далее мы "рисуем" наши буквы из строки в некую виртуальную функцию, которая только и делает, что считает общую ширину конечной строки. Ну а дальше всё просто:
делим ширину экрана на два, делим ширину строки на два, отнимаем половину ширины строки от половины ширины экрана. Получившееся значение - x, это точка, с которой надо начинать рисование строки.
Будет точно по центру.
Капец молодеж пошла, простейшие алгоритмы рассчитать не могёт.
ну ладно яб понял, если бы скажем реализовать табуляцию. О то чего - строку по ширине выровнять не могут.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша, я боюсь, что ему надо не просто отцентровать текст:
(Ширина поля для текста / 2) - Ширина текста / 2
(действительно, слишком просто)
А аккуратно его растянуть по всей ширине поля. Или сделать перенос на новую строку как в чатике/поле для ввода.
__________________
vk.com/skullcapstudios
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 21:28. | Показать все 5 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024