ZenGL Tutorial 2/ru
English · Español · Français · Русский
Создание шрифта ZenGL
Создадим шрифт ZenGL. Для решения поставленной задачи нам потребуется скачать генератор шрифтов ZenFont. Запустив программу, вы увидите что-то похожее на картинку ниже:

Создание программы
- Создаем пустой проект и ссылаемся на ZenGL как это было описано в предыдущей статье.
- Создадим директории:
projectname\bin
projectname\data
projectname\project
- Сохраним проект по пути: "projectname\project".
- Скопируем шрифт (.ZFI файл) в "projectname\data"
- Идем в Project > Options > Paths и в Target file name допишем "..\bin\project1".
Исходный код
var
dirRes : String {$IFNDEF DARWIN} = '../data/' {$ENDIF}; // это путь к ресурсам
fnt : zglPFont; // это шрифт, который мы будем использоватьЗагрузим шрифт:
procedure Init;
begin
fnt := font_LoadFromFile( dirRes + 'Agency FB-Regular-18pt.zfi' );
end;Процедура рисования (тут мы рисуем текст нашим шрифтом):
procedure Draw;
var
rect: zglTRect;
begin
text_Draw( fnt, 0, 0, 'Sample Text. Press ESC to EXIT.' );
text_DrawEx( fnt, 32, 32, 1.5, 0, 'Sample Text with DrawEx - Scale 1.5 - Alpha 150', 150 );
rect.H:=128;
rect.W:=400;
rect.X:=0;
rect.Y:=96;
pr2d_rect(rect.X,rect.Y,rect.W,rect.H,$FFFFFF,100);
text_DrawInRect(fnt,rect,
'Sample multiline text in rect.' + #10 +
'Sample multiline text in rect.'+ #10 +
'Sample multiline text in rect.');
end;Код выхода из программы по нажатию ESC:
procedure Timer;
begin
if key_Press( K_ESCAPE ) Then zgl_Exit();
key_ClearState();
end;Результат
Теперь вы можете увидеть текст напечатанный нашим шрифтом

Конечный код будет выглядет примено так:
program project1;
{$IFDEF WINDOWS}
{$R *.res}
{$ENDIF}
{$DEFINE STATIC}
uses
{$IFNDEF STATIC}
zglHeader
{$ELSE}
zgl_main,
zgl_screen,
zgl_window,
zgl_timers,
zgl_keyboard,
zgl_font,
zgl_text,
zgl_textures,
zgl_textures_tga,
zgl_primitives_2d,
zgl_utils,
zgl_math_2d
{$ENDIF}
;
var
dirRes : String {$IFNDEF DARWIN} = '../data/' {$ENDIF};
fnt : zglPFont;
procedure Init;
begin
fnt := font_LoadFromFile( dirRes + 'Agency FB-Regular-18pt.zfi' );
end;
procedure Draw;
var
rect: zglTRect;
begin
text_Draw( fnt, 0, 0, 'Sample Text. Press ESC to EXIT.' );
text_DrawEx( fnt, 32, 32, 1.5, 0, 'Sample Text with DrawEx - Scale 1.5 - Alpha 150', 150 );
rect.H:=128;
rect.W:=400;
rect.X:=0;
rect.Y:=96;
pr2d_rect(rect.X,rect.Y,rect.W,rect.H,$FFFFFF,100);
text_DrawInRect(fnt,rect,
'Sample multiline text in rect.' + #10 +
'Sample multiline text in rect.'+ #10 +
'Sample multiline text in rect.');
end;
procedure Timer;
begin
if key_Press( K_ESCAPE ) Then zgl_Exit();
key_ClearState();
end;
Begin
{$IFNDEF STATIC}
zglLoad( libZenGL );
{$ENDIF}
timer_Add( @Timer, 16 );
zgl_Reg( SYS_LOAD, @Init );
zgl_Reg( SYS_DRAW, @Draw );
zgl_Enable( APP_USE_UTF8 );
wnd_SetCaption( 'Sample Text' );
wnd_ShowCursor( TRUE );
scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
zgl_Init();
End.From the Free Pascal wiki, page "ZenGL Tutorial 2/ru", as it stood on 2020-03-03 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Edited on wiki.freepascal.org by 6 people, 2011–2020
From the official wiki's backup of 26 May 2024: who edited this page there, and when. Edits made there after that date were not recorded, and the earlier versions are not shown here; the main page says why.
| When | Who | What changed |
|---|---|---|
| Impfp | New page: == Создание шрифта ZenGL == Создадим шрифт ZenGL. Для решения поставленной задачи нам потребуется скачать ге... | |
| Impfp | Создание шрифта ZenGL | |
| Impfp | Create program | |
| Lainz | ||
| Andru | Исходный код | |
| Andru | Создание программы (minor) | |
| Vincent | Text replace - "delphi>" to "syntaxhighlight>" (minor) | |
| FTurtle | (minor) | |
| FTurtle | categories (minor) | |
| Trev | Fixed syntax highlighting; deleted category included in page template (minor) |
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
