HOME ПРИМЕРЫ THANKS НОВИЧКАМ ДОКИ LINKS JavaScript Mail | |||
| |||
|
Turbo Pascal Documentation |
Функция RegisterBGIfontФункция: Регистрирует загружаемый пользователем или скомпонованный с программой шрифт формата BGI (формат фирмы Борланд) в графической системе. Описание: RegisterBGIfonr(шрифт : pointer) : integer; Примечания: В случае ошибки возвращаемое значение будет меньше 0. В противном случае возвращается внутренний номер шрифта. Эта программа позволяет пользователю загрузить файл шрифта и "зарегистрировать" шрифт, передав его адрес в памя- ти процедуре RagisterBGIfont. После этого данный шрифт можно выбирать с помощью обращения к процедуре SetTextStyle. Выб- ранный шрифт будет непосредственно использоваться без необ- ходимости загрузки его с диска модулем Graph. Зарегистриро- ванный пользователем шрифт можно загрузить с диска в динами- чески распределяемую область памяти или преобразовать (с по- мощью утилиты BINOBJ.EXE) в файл .OBJ, а затем скомпоновать с программой в выполняемый файл. Приведем перечень некоторых возможных ошибок: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Код ошибки Идентификатор ошибки Комментарий - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -11 grError При регистрации еще одно- го шрифта не хватает мес- та для таблицы шрифтов. (Таблица шрифтов может содержать до 10 шрифтов, из них в стандартной кон- фигурации имеется только 4, поэтому эта ошибка возникать не должна.) -13 grInvalidFont Не распознан заголовок шрифта. -14 grInvalidFontNum Не распознан номер шрифта в заголовке шрифта. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Следующая программа загружает в динамически распределя- емую область шрифт triplex, регистрирует его в графической системе, а зетем предоставляет возможность выбора между этим шрифтом и другим штриховым шрифтом, который модуль Graph загружает с диска (SansSerifFont). program LoadFont; uses Graph; var Driver, Mode : integer; FontF : file; FontP : pointer; begin { открыть файл шрифта, считать его в память и зарегистрировать } Assign(FontF, 'TRIP.CHR'); Reset(FontF, 1); GetMem(FontP, FontP^, FileSize(FontF)); if RegisterBGIfont(FontP) < 0 then begin Writeln('Ошибка регистрации шрифта: ', GraphErrorMsg(GraphResult)); Halt(1); end; { инициализировать графику } Driver := Detect; InitGraph(Driver, Mode, '..\'); if GraphResult < 0 then Halt(1); Readln; { выбрать зарегистрированный шрифт } SetTextStyle(TriplexFont, HorizDir, 4); OutText('Программой загружен шрифт Triplex'); MoveTo(0, TextHeight('a')); Readln; { Повторно выбрать зарегистрированный шрифт (уже загруженный в память } SetTextStyle(TriplexFont, HorizDir, 4); OutText('Программой снова выбран шрифт Triplex'); Readln; CloseGraph; end. Программа начинает свою работу с загрузки с диска шриф- та Triplex и регистрации его модулем Graph. Затем для иници- ализации графической системы вызывается процедура InitGraph. Проверьте, есть ли обращение к диску и нажмите клавишу ENTER. Поскольку теперь шрифт Triplex уже загруже в память и зарегистрирован, модулю Graph не нужно считывать его с диска (таким образом, отпадает необходимость обращения к дисково- ду). Затем программа активизирует шрифт SansSerifFont, заг- ружая его с диска (он не зарегистрирован). Снова нажмите клавишу ENTER и посмотрите, есть ли обрашение к диску (при обращении к диску загорается лампочка-индикатор на панели компьютера). Наконец, программа снова выбирает шрифт Triplex. Поскольку он уже зарегистрирован, то при этом прог- рамма, когда вы нажмете клавишу ENTER, обращаться к диску не будет. Для загрузки и регистрации файлов шрифтов имеется нес- колько причин. Во-первых, модель Graph в каждый момент вре- мени хранит в памяти только один штриховой шрифт. Если у вас имеется программа, которая должна быстро переключаться с од- ного шрифта не другой, то возможно вы предпочтете в начале программы выполнить регистрацию и загрузку шрифта. При этом при обращении к процедуре SetTextStyle модулю Graph не пона- добится каждый раз загружать и разгружать шрифт. Во-вторых, вы можете захотеть разместить файл шрифта непосредственно в вашем файле .EXE. Таким образом, файл шрифта, который использует ваша программа, окажется встроен- ным, и для запуска программы потребуется только выполняемый файл (файл .EXE). Процесс размещения файла шрифта в выполня- емом файле довольно прост и состоит в следующем: 1. Выполнить для файла (или файлов) программу BINOBJ. 2. Скомпоновать результирующие файлы ,OBJ с вашей программой. 3. Перед вызовом процедуры Init зарегистрировать ском- понованные файлы (файл) драйвера. Более подробное описание этого процесса можно найти в комментариях, содержащихся в шапке программы-примера GRLINK.PAS на диске 3. Документация по утилите BINOBJ содер- жится в Приложении С "Руководства пользователя". Заметим, что в используемый по умолчанию шрифт (с бито- вым отображением 8х8) встроен в модель GRAPH.TPU и, таким образом, все время находится в памяти. При выборе и загрузке штрихового шрифта ваша программа имеет возвожность переклю- чаться между используемым по умолчанию и штриховым шрифтом без необходимости перезагружать какой-либо из них. Можно также регистрировать файлы драйверов (см. описа- ние функции RegisterBGIdriver. Аналогичная функция имеется в версии 2.0 Турбо-Си. Прочее: См. также процедуры SetTextStyle и InstallUserFont. |
HOME |