Difference between revisions of "ZenGL Tutorial 2/ru"

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting; deleted category included in page template)
 
(5 intermediate revisions by 3 users not shown)
Line 12: Line 12:
 
== Создание программы ==
 
== Создание программы ==
  
*Создаем пустой проекта и ссылаемся на ZenGL как это было описано в предыдущей статье.
+
*Создаем пустой проект и ссылаемся на ZenGL как это было описано в предыдущей статье.
  
 
*Создадим директории:
 
*Создадим директории:
Line 30: Line 30:
 
== Исходный код ==
 
== Исходный код ==
  
<delphi>var
+
<syntaxhighlight lang=pascal>var
   dirRes    : String {$IFNDEF DARWIN} = '../data/' {$ENDIF}; // this is the directory where resources are placed
+
   dirRes    : String {$IFNDEF DARWIN} = '../data/' {$ENDIF}; // это путь к ресурсам
   fnt        : zglPFont; // this is the font we will use </delphi>
+
   fnt        : zglPFont; // это шрифт, который мы будем использовать</syntaxhighlight>
  
 
Загрузим шрифт:
 
Загрузим шрифт:
<delphi>procedure Init;
+
<syntaxhighlight lang=pascal>procedure Init;
 
begin
 
begin
 
   fnt := font_LoadFromFile( dirRes + 'Agency FB-Regular-18pt.zfi' );
 
   fnt := font_LoadFromFile( dirRes + 'Agency FB-Regular-18pt.zfi' );
end; </delphi>
+
end; </syntaxhighlight>
  
 
Процедура рисования (тут мы рисуем текст нашим шрифтом):
 
Процедура рисования (тут мы рисуем текст нашим шрифтом):
<delphi>procedure Draw;
+
<syntaxhighlight lang=pascal>procedure Draw;
 
var
 
var
 
   rect: zglTRect;
 
   rect: zglTRect;
Line 60: Line 60:
 
   'Sample multiline text in rect.'+ #10 +
 
   'Sample multiline text in rect.'+ #10 +
 
   'Sample multiline text in rect.');
 
   'Sample multiline text in rect.');
end; </delphi>
+
end; </syntaxhighlight>
  
 
Код выхода из программы по нажатию ESC:
 
Код выхода из программы по нажатию ESC:
<delphi>procedure Timer;
+
<syntaxhighlight lang=pascal>procedure Timer;
 
begin
 
begin
 
   if key_Press( K_ESCAPE ) Then zgl_Exit();
 
   if key_Press( K_ESCAPE ) Then zgl_Exit();
 
   key_ClearState();
 
   key_ClearState();
end; </delphi>
+
end; </syntaxhighlight>
  
 
== Результат ==
 
== Результат ==
Line 77: Line 77:
 
Конечный код будет выглядет примено так:
 
Конечный код будет выглядет примено так:
  
<delphi>program project1;
+
<syntaxhighlight lang=pascal>program project1;
  
 
{$IFDEF WINDOWS}
 
{$IFDEF WINDOWS}
Line 158: Line 158:
  
 
   zgl_Init();
 
   zgl_Init();
End.    </delphi>
+
End.     
 +
</syntaxhighlight>

Latest revision as of 12:34, 3 March 2020

English (en) español (es) français (fr) русский (ru)


ZenGL/ru | Tutorial 1 | Tutorial 2 | Tutorial 3 | Edit

Создание шрифта ZenGL

Создадим шрифт ZenGL. Для решения поставленной задачи нам потребуется скачать генератор шрифтов ZenFont. Запустив программу, вы увидите что-то похожее на картинку ниже:

zenfont.png

Создание программы

  • Создаем пустой проект и ссылаемся на 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;

Результат

Теперь вы можете увидеть текст напечатанный нашим шрифтом

zengltext.png

Конечный код будет выглядет примено так:

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.