Язык:
Русский
English
RegisterBGIFont (функция) (модуль Graph)
Передает графической системе указатель на шрифт, который был встроен в исполняемый файл программы (с помощью tlink.exe).
Объявление
Function RegisterBGIFont(Font : Pointer) : Integer;
Режим
Real, Protected
Замечания
Если происходит ошибка, функция возвращает значение меньшее нуля. Возможные коды ошибок - grError, grInvalidFont и grInvalidFontNum. При отсутствии ошибок, возвращается внутренний номер шрифта.
Эта функция дает возможность пользователю загрузить файл шрифта и зарегистрировать его, передавая его расположение в памяти в RegisterBGIfont.
При вызове SetTextStyle, будет использоваться зарегистрированный шрифт, вместо загружанмого с диска модулем Graph. Зарегистрированный пользователем шрифт может быть загружен с диска в кучу (heap), или преобразован в *.OBJ файл (с помощью BINOBJ.EXE) и прилинкован к *.EXE
Для загрузки и регистрации файла шрифта имеются несколько причин: Во-первых, Graph может хранить только один штриховой шрифт в памяти в определенный момент времени. Если ваша программа должна быстро чередовать штриховые шрифты, вы можете зарегистрировать нужные вам шрифты самостоятельно в начале программы. При этом Graph уже не будет загружать и выгружать шрифты каждый раз при обращении к SetTextStyle.
Во-вторых, при желании, вы можете включить файлы шрифта непосредственно в ваш *.EXE файл. Таким образом, необходимые для работы вашей программы файлы шрифта, будут встроены в нее.
Встроить файл шрифта в вашу программу можно так:
1. Запустить программу binobj.exe на файле шрифта.
2. Скомпоновать полученный *.OBJ файл с вашей программой.
3. Зарегистрировать файл шрифта перед вызовом InitGraph.
Для более детального объяснения и примера вышенаписанного, смотри комментарии в программе BGILINK.PAS на дистрибутивном диске. Документация по утилите BINOBJ доступна в файле UTIL.DOC (в архиве ONLINE.ZIP) на вашем дистрибутивном диске.
Смотри также
Пример
Язык:
Русский
English
{ Пример программы для RegisterBGIFont }
var
Driver, Mode : Integer;
FontF : File;
FontP : Pointer;
begin
{ Открываем файл шрифта, регистрируем }
Assign(FontF, 'TRIP.CHR');
Reset(FontF, 1);
GetMem(FontP, FileSize(FontF));
BlockRead(FontF, FontP^, FileSize(FontF));
if RegisterBGIFont(FontP) < 0 then
begin
WriteLn('Ошибка регистрации шрифта: ', GraphErrorMsg(GraphResult));
Halt(1);
end;
{ Инициализируем графику }
Driver := Detect;
InitGraph(Driver, Mode, 'X:\BP'); { Путь к BGI драйверам }
if GraphResult < 0 then
Halt(1);
ReadLn;
{ Выбираем установленый шрифт }
SetTextStyle(TriplexFont, HorizDir, 4);
OutText('Triplex loaded by user program');
MoveTo(0, TextHeight('a'));
ReadLn;
{ Выбираем шрифт, загружаемый с диска }
SetTextStyle(SansSerifFont, HorizDir, 4);
OutText('Your disk should be spinning..');
MoveTo(0, GetY + TextHeight('a'));
ReadLn;
{ Перевыбираем фонт, уже находящийся в памяти }
SetTextStyle(TriplexFont, HorizDir, 4);
OutText('Back To Triplex');
ReadLn;
CloseGraph;
end.