forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_font32: Графические шрифты (http://forum.boolean.name/showthread.php?t=6103)

Trazzy 02.01.2010 05:34

Ответ: Lib_font32: Графические шрифты
 
odd, и сново огромное спасибо..
и еще одна вещь для полного счастья..
эт будет не тяжело сделать:
нужно чтоб после вызова Format можно было узнать на сколько строк был разбит текст
(т.е. добавить функцию типо StringsCount или т.п.)

cherepets 03.01.2010 22:27

Ответ: Lib_font32: Графические шрифты
 
а разве сейчас функция format количество строк не возвращает?
__________________________________________________ ________
ой, извини, перепутал, там высота в точках...
никогда не использовал то что возвращает эта функция, вот и перепутал...

Trazzy 05.01.2010 09:17

Ответ: Lib_font32: Графические шрифты
 
В описании к либе было сказано:
Цитата:

Функция возвращает расчётную высоту полученного разбитого текста в пикселах.
Ну, разве что делить это число на высоту шрифта..
Не удобно както, особенно если шрифтов несколько и они разные по высоте..

Trazzy 08.01.2010 10:10

Ответ: Lib_font32: Графические шрифты
 
Ладно, меня сейчас интересует другой вопрос.
После форматирования в Format и вывода через DrawTextWindow,
текст "вылазит" за указаные мной размеры окна.
Что делать чтоб такого не было?

cherepets 08.01.2010 16:02

Ответ: Lib_font32: Графические шрифты
 
я на прошлой странице писал уже об этом.
лично я нашел такой выход: imagefromcanvas(); drawtextwindow; drawimage();
думаю суть понятна)))

GRAY_WOLF 08.01.2010 23:26

Ответ: Lib_font32: Графические шрифты
 
Цитата:

Сообщение от ArtikZ (Сообщение 132614)
Ладно, меня сейчас интересует другой вопрос.
После форматирования в Format и вывода через DrawTextWindow,
текст "вылазит" за указаные мной размеры окна.
Что делать чтоб такого не было?
__________________

Посмотри этот пример

Trazzy 09.01.2010 18:20

Ответ: Lib_font32: Графические шрифты
 
Вложений: 1
2 GRAY_WOLF: я не понимаю чем может помочь твой пример в такой ситуации.. Я уже писал, что с составлением меню, выводом текста и использованием либ у меня проблем нет. А ты попробуй используя последнюю версию либы Lib_font32 сделать DrawTextWindow не на весь экран, а чтоб снизу осталось пикселей 20-30.. Ниже пример программы с этой проблемой.
2 cherepets: спс, частично решило проблему с выводом..

GRAY_WOLF 09.01.2010 21:24

Ответ: Lib_font32: Графические шрифты
 
Вот так путем подбора высоты на разрешении 128*128 глюк изчез.

PHP код:

Font(1);
    
TextWindow(322gw-12gh-40);
    
txth:=Format('Если посмотреть в эмуляторе с расширением 130х130 - под "выход"ом глюк..'+chr(13)+chr(13)+
                 
'вот эта строчка'0);
    
DrawTextWindow

Так же поправь выход.

PHP код:

repeat
  gk1
:=getKeyClicked;
  
until gk1 <> KE_NONE;
  if 
gk1=KE_STAR  then halt;//  KE_POUND - это решетка, а не звёздочка. 


Trazzy 10.01.2010 08:34

Ответ: Lib_font32: Графические шрифты
 
Цитата:

Вот так путем подбора высоты на разрешении 128*128 глюк изчез.
2 GRAY_WOLF, это не решение... ты просто опустил окно на 3px ниже, тем самым уменьшил видимость той строчки из "дырки".. Конечно это частично решает проблему, если строк останется столько же... а если их будет намного больше и текст будет прокручиватся?!.. все равно покажутся те букаффки.. Это не код программы которую я делаю, это всего лишь пример в котором я хотел показать в чем "запарка" этой библиотеки. Конечно в моем примере можно решить эту проблему просто, например прорисовав нижнюю полоску после вывода окна с текстом. Но мне было интересно узнать как другие обходят эту проблему не рисуя поверху той "дырки".. Вот cherepets - маладец, понял ход моих мыслей..:-D

З.Ы. а выход то фигня, все равно на скорую руку писал.. не заметил

GRAY_WOLF 10.01.2010 09:17

Ответ: Lib_font32: Графические шрифты
 
Такой же глюк и с меню. Если текст в пункте меню большой и делаешь его прокрутку, то окно приходится делать на весть дисплей.
Вот оригинальный код от odd он к тому же еще и с сенсором
PHP код:

procedure Cls2// Очистка экрана
begin
    SetColor
(15,155,255); FillRect(0,0,wi,hi);
end;

Procedure ShowInfo(sstring); // Показ какой-либо информации
var     text_heightyinteger;
        
hhboolean;
        
imImage;
begin
    hh
:=falseim:=LoadImage('/beck.png');
    
Loadvscroll(LoadImage('/vscroll.png')); // Загрузка скина для скроллера
    
SetVScroll(wi VScrollWidth0hi 22); // Установка положения и длины скроллера
    
vscroll.SetOffset(6); // Отступ (чтоб не закрыть ползунком стрелочки)
    
TextWindow(22wi VScrollWidth 2hi 22); // Установка текстового окна (на весь экран за вычетом ширины скроллера)
    
text_height:=Format(s0);
    
Cls2DrawTextWindow;
    if 
text_height hi 22 then hh:=true;
    if 
hh false then DrawVScroll(0text_heightGetPositionhi 20); else DrawVScroll(0text_height00);
    
FillRect(0hi 22wi22); DrawImage(imwi 56hi 20); RepaintDelay(200);//Вот это как раз закрашивает ту часть дисплея в низу
    
repeat // Главный цикл программы        
        
key2:=GetKeyPressedkey:=KeyToAction(key2); Delay(5);
        if 
hh false then
        begin
            
if key GA_DOWN then
                begin
                    MoveDown
(2); Cls2DrawTextWindowDrawVScroll(0text_heightGetPositionhi 20);
            
end;
            if 
key GA_UP then
                begin
                    MoveUp
(2); Cls2DrawTextWindowDrawVScroll(0text_heightGetPositionhi 20);
                
end;
            
FillRect(0hi 20wi20); DrawImage(imwi 56hi 20); Repaint;//Вот это как раз закрашивает ту часть дисплея в низу
        
end;
        if (
pointer_state 1then
        begin
            y
:=pointer_pressed_y;
            if (
pointer_pressed_x wi GetImageWidth(im)) and (pointer_pressed_x wi) and (pointer_pressed_y hi GetImageHeight(im)) and (pointer_pressed_y hithen break; // Выход если нажали на кнопку выход на сенсорном экране
            
While (pointer_state 1) do Delay(50); // Ждем пока отпустит перо (для перемотки текста пером)
            
y:=pointer_dragged_y// Отпустил
            
if 0 then MoveUp(y) else MoveDown(-y); // Перемотка текста
            
Cls2DrawTextWindowDrawVScroll(0text_heightGetPositionhi 20);
        
end;
        if (
key2=-4) or (key2=-7) or (key2=22then break; // Выход
    
until false;
end


cherepets 10.01.2010 18:25

Ответ: Lib_font32: Графические шрифты
 
а есть еще вопрос: мне нужен шрифт без сглаживания, а генфонт по умолчанию все гладит. кроме рисования файла шрифта самому пейнтом есть идеи?
__________________________________________________ ________________
также заметил что в генфонт кегли неправильные:
8й размер шрифта генфонта соответствует настоящему 10му.

odd 12.01.2010 01:25

Ответ: Lib_font32: Графические шрифты
 
Цитата:

Сообщение от cherepets (Сообщение 132978)
а есть еще вопрос: мне нужен шрифт без сглаживания, а генфонт по умолчанию все гладит. кроме рисования файла шрифта самому пейнтом есть идеи?
__________________________________________________ ________________
также заметил что в генфонт кегли неправильные:
8й размер шрифта генфонта соответствует настоящему 10му.

Можно убрать сглаживание в фотошопе путем уменьшения количества цветов в картинке до двух.

cherepets 12.01.2010 08:10

Ответ: Lib_font32: Графические шрифты
 
это кривой способ - результат крайне грусный...
сейчас я в фотшопе набиваю заново все символы, что не быстро...

ViNT 12.01.2010 14:43

Ответ: Lib_font32: Графические шрифты
 
А ClearType на это не влияет?

cherepets 12.01.2010 18:18

Ответ: Lib_font32: Графические шрифты
 
ViNT, гениально! отключил сглаживание в системе и все круто))))


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

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