forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   font32 - побуквенный вывод текста... (http://forum.boolean.name/showthread.php?t=13760)

Rameron 23.11.2010 13:58

font32 - побуквенный вывод текста...
 
Задача состоит в том, чтобы в помощью библиотеки font32 побуквенно выводить на экран небольшие отрывки текста. Но проблема заключается вот в чем:
При каждом использовании Format, текст заново форматируется, по этому получается что-то вроде:
|Сюжет разворачивается во вр|
|время шторма, когда на ферме|
|главных персонажей Тома и Дж|
|Джиллиан появляется... |
вместо:
|Сюжет разворачивается во |
|время шторма, когда на ферме|
|главных персонажей Тома и |
|Джиллиан появляется... |

PHP код:

//strDraw - побуквенно выводимый на дисплей текст
//strAlLoaded - текст, что выведен ранее на дисплей и отрисовывается сразу

rc.init(5); //текст выводится с поворотом на 90'
TextWindow(textBorder,textBorder,getWidth-textBorder,getHeight-textBorder); //TextBorder - зазор
for i:=0 to Length(strDraw) do
  
begin
    keyClicked
:=getKeyClicked;
    
//если нажато 5, вывести весь текст и не мучать юзера
    
if keyClicked=KE_KEY5 then
      begin
        s
:=Format(strAlLoaded copy(strDraw,0,Length(strDraw)),0);
        
DrawTextWindow;
        
rc.repaint;
        break;
      
end;
    
//отрисовать уже выведенный ранее текст (если дисплей без него, то переменная strAlLoaded='') и дорисовывать по букве нового
    
s:=Format(strAlLoaded copy(strDraw,0,i),0);
    
DrawTextWindow;
    
rc.repaint;
    
delay(10);
  
end

Просьба помочь с алгоритмом...:SOS:
P.S. Пословно уже делал - такой способ не подходит.

odd 24.11.2010 01:58

Ответ: font32 - побуквенный вывод текста...
 
Так ведь функция format может работать и в режиме добавления текста. Просто вместо 0 поставь 1 и добавляй текст побуквенно или пословно. Да и экран после вывода каждой буквы нужно будет снова очищать.

Rameron 24.11.2010 02:02

Ответ: font32 - побуквенный вывод текста...
 
Цитата:

Сообщение от odd (Сообщение 169681)
Так ведь функция format может работать и в режиме добавления текста. Просто вместо 0 поставь 1. Да и экран после вывода каждой буквы нужно будет снова очищать.

Отпадает, поскольку сам процесс побуквенного вывода довольно ресурсо-емкий, да и текст рисуется не на чистом экране, а на картинке. Если её при выводе каждой буквы перерисовывать, то это вызовет тормоза, что в моем случае недопустимо.

odd 24.11.2010 02:13

Ответ: font32 - побуквенный вывод текста...
 
Тогда скорее всего придется вам писать собственный алгоритм разбиения строк и выводить потом текст побуквенно используя DrawString.

Rameron 24.11.2010 02:22

Ответ: font32 - побуквенный вывод текста...
 
Цитата:

Сообщение от odd (Сообщение 169683)
Тогда скорее всего придется вам писать собственный алгоритм разбиения строк и выводить потом текст побуквенно используя DrawString.

Я уже так и подумал. Кстати, у меня такой еще вопрос - в font32 строки разбивались ориентировано используя пробелы между словами?

Trazzy 24.11.2010 03:16

Ответ: font32 - побуквенный вывод текста...
 
Я конечно не в курсе, но вроде еще какими-то специальными символами..

Rameron 24.11.2010 19:02

Ответ: font32 - побуквенный вывод текста...
 
Цитата:

Сообщение от 2Fake (Сообщение 169688)
Я конечно не в курсе, но вроде еще какими-то специальными символами..

Ну насчет chr(32) + chr(13) я в курсе, я имел ввиду во время разбора строки.

Trazzy 26.11.2010 01:20

Ответ: font32 - побуквенный вывод текста...
 
Хз, надо будет декомпилировать и посмотреть ))

odd 26.11.2010 10:59

Ответ: font32 - побуквенный вывод текста...
 
Во время разбора строки алгоритм разбиения строк старается вывести в одну строку как можно больше слов ориентируясь по пробелам. Если какое-то слово уже не влезает в строку, то его переносят на следующую строку. Таким образом, алгоритм выводит текст по словам, а не по буквам и старается не разбивать слова на 2 куска. Исключение составляют только те случаи когда слово очень длинное и явно не влезает по ширине в строку даже если его одного выводить, в этом случае слово приходится разбивать на части и переносить.

Rameron 27.11.2010 03:39

Ответ: font32 - побуквенный вывод текста...
 
Цитата:

Сообщение от odd (Сообщение 169958)
Во время разбора строки алгоритм разбиения строк старается вывести в одну строку как можно больше слов ориентируясь по пробелам. Если какое-то слово уже не влезает в строку, то его переносят на следующую строку. Таким образом, алгоритм выводит текст по словам, а не по буквам и старается не разбивать слова на 2 куска. Исключение составляют только те случаи когда слово очень длинное и явно не влезает по ширине в строку даже если его одного выводить, в этом случае слово приходится разбивать на части и переносить.

Спасибо за разъяснение алгоритма.


Часовой пояс GMT +4, время: 00:21.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot