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)

im_zorg 12.05.2011 21:48

Ответ: Lib_font32: Графические шрифты
 
Исправьте пожалуйста. порылся в исходнике либы(нагло декомпильнул:D) по изменял значения i2, если cshift умножить на 3, то все будет хорошо, но скролинг будет рывками. P.S. юзал последнюю версию...

Atqt 18.10.2011 01:02

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

AVL 18.10.2011 12:09

Ответ: Lib_font32: Графические шрифты
 
Это баг мидлетпаскаля - не понимает русские буквы в тексте программы. Текст лучше загружать из ресурсов.

Gonzo 29.12.2011 18:45

Ответ: Lib_font32: Графические шрифты
 
Вложений: 1
Второй день пытаюсь прикрутить библиотеку, но стабильного результата нет. На первых версиях библиотеки на эмуляторе всё работало стабильно,
на телефоне пустой экран и зависание.
Скачал новую версию библиотеки (вроде как последнюю - с функцией поворота). Демка не работает (эмулятор SjBoy).
Ладно. Попробовал использовать в проекте - пустой экран и зависание.
Вот выдрал функцию из проекта и немного подправил для лучшего восприятия:
Код:

program TestChat;
uses font32,vscroll;

function ShowChat: Integer;
var
        i, wi, hi, text_height, key: integer;
        fBack,fMsg,fClicked: Command;
begin
        wi:=GetWidth;
        hi:=GetHeight;
        //задаём шрифт
        font32.rotate(0);
        font32.init(1);
        font32.Font(0);
        font32.LoadFont('Verdana');
        font32.color(255, 0, 255, 0);
        //задаём окно, текст и рисуем
        font32.TextWindow(1, 1, wi - 16, hi);
        text_height:=font32.Format('Нет сообщений',0);
        font32.DrawTextWindow;
        //если есть что прокручивать
        if text_height>hi then
        begin
                //задаём и рисуем скроллер
                vscroll.LoadVScroll(LoadImage('/vscroll.png'));
                vscroll.SetVScroll(wi - VScrollWidth, 0, hi);
                vscroll.SetOffset(16);
                vscroll.DrawVScroll(0, text_height, 0, hi);
        end;
        //создаём и добавляем команды
        fBack := createCommand('Назад', CM_BACK, 1);
  fMsg:= createCommand('Написать', CM_ITEM, 2);
  addCommand(fBack);
  addCommand(fMsg);
  //перерисовываем всё
  Repaint;
  repeat
    Delay(100);
    //если есть что прокручивать
    if text_height>hi then
    begin
                        //контролируем клавиши прокрутки
                        key:=KeyToAction(GetKeyPressed);
                        if key = GA_DOWN then
                        begin
                                FillRect(0,0,wi,hi);
                                font32.MoveDown(TextHeight);
                                font32.DrawTextWindow;
                                vscroll.DrawVScroll(0, text_height, GetPosition, hi);
                                Repaint;
                        end
                        else if key = GA_UP then
                        begin
                                FillRect(0,0,wi,hi);
                                font32.MoveUp(TextHeight);
                                font32.DrawTextWindow;
                                vscroll.DrawVScroll(0, text_height, GetPosition, hi);
                                Repaint;
                        end;
                end;
    fClicked := getClickedCommand;
  until (fClicked = fBack) or (fClicked = fMsg);
  if fClicked = fBack then
                ShowChat := 0
        else if fClicked = fMsg then
                ShowChat := 1;
        //else
  removeCommand(fBack);
  removeCommand(fMsg);
  font32.init(0);
end;

begin
        repeat
        until ShowChat=0;
end.

Проект так же прикладываю в аттаче.

Допустил ли я какую-то ошибку при использовании библиотеки или
может кто-нибудь поделится ссылкой на стабильную версию библиотеки?

Спасибо

PassCall 13.01.2012 19:05

Ответ: Lib_font32: Графические шрифты
 
Может, следует добавить в проект фонт, прежде чем его загружать? :В
Я имею ввиду, что в списке ресурсов его нет, и при этом пытаешься его загрузить (LoadFont)

Да и вообще - да здравствует дебаг!

Хотя бы такой:
Код:

procedure z(_a:string);
begin
        setcolor (random(128),random(128),random(128));
        fillrect (0,0,240,30);

        setcolor (random(256),random(256),random(256));
        drawtext (_a,0,0);

        repaint;
        delay (1000);
end;

и юзать так

Код:

......некий код.........
z ('грузим шрифт');
......некий код.........
z ('выводим картинку');
......некий код.........
z ('еще что нибудь');

Надпись появляется? Код выполняется!
Надписи нет? Ошибка, привет!

AntiRock 23.06.2012 20:11

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

Код:

Program galaxy;
Uses font32;
Var
        su:string;
Begin
        font32.init(1);
        font32.font(0);
        font32.loadfont('myfont1');
        su:='сраный текст не отображается на экране';
        font32.drawstring(su,10,10);
        repaint;
        delay(5000);
End.

Ошибок при компиляции не выдает, путем тыка "halt;" в каждую строку понял, что программа виснет на 10 строке, почему? - понять не могу.

AVL 23.06.2012 21:30

Ответ: Lib_font32: Графические шрифты
 
Скопипастил код (подправив название шрифта) - все работает. Шрифт (.png и .dat файлы) в ресурсы не забыл добавить?

AntiRock 24.06.2012 06:39

Ответ: Lib_font32: Графические шрифты
 
Да, добавил. Я его генерировал в GenFont, а получившие два файла назвал "myfont1". В списке ресурсов они есть. Дело точно не в KEmulator`е, потому что скачивал мидлет на телефон - проблема осталась. Естественно первое, что я подумал, что проблема в русском тексте, ввел английский - результат нулевой, и просто без переменной вводил текст(напрямую в drawstring). В общем, бред какой-то.

AntiRock 24.06.2012 10:21

Ответ: Lib_font32: Графические шрифты
 
И еще немного не по теме...Забил на модуль фонт32, выдающий ошибку, и начал разбираться с сенсорным дисплеем, получилась очень даже неплохая qwerty-клавиатура, которую я еще конечно буду доделывать под себя, но появился вопрос. Код слишком длинный и там очень много почти одинаковых строк можно ли его как-то оптимизировать?
Выкладываю код:
Код:

Program galaxy;
Uses
        sensor;
Var
        xcursor,ycursor,readkey:integer;
        box:image;
        key,text:string;
        exit:boolean;
Begin
        sensor.init;
        box:=loadimage('/qwerty1.png');
        drawimage(box,0,0);
        repaint;
        repeat
        if pointer_state=1 then readkey:=1;
        if (pointer_state=0) and (readkey=1) then readkey:=2
        if readkey=2 then
        begin
        xcursor:=pointer_released_x;
        ycursor:=pointer_released_y;
        end;
        if (xcursor>2) and (xcursor<33) and (ycursor>519) and (ycursor<544) and (readkey=2) then key:='q';
  if (xcursor>38) and (xcursor<70) and (ycursor>519) and (ycursor<544) and (readkey=2) then key:='w';
  if (xcursor>74) and (xcursor<105) and (ycursor>519) and (ycursor<544) and (readkey=2) then key:='e';
  if (xcursor>110) and (xcursor<141) and (ycursor>519) and (ycursor<544) and (readkey=2) then key:='r';
  if (xcursor>146) and (xcursor<177) and (ycursor>519) and (ycursor<544) and (readkey=2) then key:='t';
  if (xcursor>182) and (xcursor<213) and (ycursor>519) and (ycursor<544) and (readkey=2) then key:='y';
  if (xcursor>280) and (xcursor<329) and (ycursor>581) and (ycursor<605) and (readkey=2) then halt;
  if readkey=2 then text:=text+key;
  xcursor:=0;
  ycursor:=0;
  key:='';
  if pointer_state=0 then readkey:=0;
  drawtext(text,10,10);
        repaint;
        until (false)
End.


AVL 24.06.2012 12:50

Ответ: Lib_font32: Графические шрифты
 
Во-первых, подумай как тут можно использовать цикл for;
Во-вторых:
Код:

function sensorkey(x,y,w,h:integer):boolean;
var
 xp,yp:integer;
begin
 xp:=pointer_pressed_x;yp:=pointer_pressed_y;
 drawrect(x,y,w,h);
 sensorkey:=(xp>=x) and (xp<=x+w) and (yp>=y) and (yp<=y+h) and (pointer_state=1);
end;

Хотя тут можно эту функцию лучше немного модифицировать - заменить pointer_pressed на pointer_released и сделать так чтобы на одно касание прога реагировала только 1 раз.

Listr 08.04.2013 19:08

Ответ: Lib_font32: Графические шрифты
 
пишу код:
ok:=CreateCommand('Начать',CM_OK,1);
AddCommand(ok);
font32.Init (1);
Font(0);
LoadFont('Arial10');
Color(255,0,0,0);
Drawstring('Здесь текст',5,5);
Drawstring('здесь тоже',5,15);
repaint;
delay(100);
-----
Компилирую - чистый экран. в чем проблема? также при нажатии кнопки начать - программа дальше не идет.

Listr 08.04.2013 20:47

Ответ: Lib_font32: Графические шрифты
 
Идиот я. В папку шрифт закинул, а в ресурсы проекта не добавил. Добавил шрифт в ресурсы, добавил textwindow и drawtextwindow и все прекрасно работает.

Fred-boy 11.05.2013 17:32

Ответ: Lib_font32: Графические шрифты
 
Объясните тупому нубу как работать с этой библиотекой? Откуда брать шрифты?

GRAY_WOLF 15.05.2013 00:54

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

Сообщение от Fred-boy (Сообщение 259093)
Объясните тупому нубу как работать с этой библиотекой? Откуда брать шрифты?

А разве не модно стало прочитать всю тему с обсуждениями???


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

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