Страница 7 из 56
Манипуляция экраном и графическим окном.
----------------------------------------
Ниже приведено краткое описание функций, выполняющих манипу-
ляции над графическим образом.
=================================================================
Манипуляция экраном:
cleardevice очищает экран (активную страницу)
setactivepage устанавливает активную страницу для графическо-
го вывода
setvisualpage устанавливает номер видимой графической страни-
цы
Манипуляция графическим окном:
clearviewport очищает текущее окно
getviewsettings возвращает информацию о текущем окне
setviewport устанавливает окно для текущего графического вы-
вода
Манипуляция образом:
getimage записывает в память битовый образ заданной об-
ласти
imagesize возвращает число байт, требуемых для сохранения
прямоугольной области экрана
putimage выводит ранее сохраненный битовый образ на эк-
ран
Манипуляция точками растра:
getpixel возвращает цвет точки в (x,y)
putpixel вычерчивает точку в (x,y)
=================================================================
Помимо вычерчивания и закрашивания графическая библиотека
предоставляет несколько функций для манипуляции экраном, графи-
ческими окнами, образами и точками. Вы можете очистить весь экран
одним махом при помощи cleardevice; данная функция очищает весь
экран и переводит текущую позицию к началу окна, но оставляет без
изменений все остальные параметры графического окна (стили линий
и закрашивания, текстовый стиль, палитру, параметры окна и т.
д.).
- 53,54 -
В зависимости от вашего графического адаптера, в вашей сис-
теме имеется от одного до восьми буферов для страниц экрана,
представляющих собой области памяти, в которых хранятся "точка за
точкой" полноэкранные образы. С помощью setactivepage и
setvisualpage вы можете определять, какая страница экрана являет-
ся активной (т.е. куда графические функции направляют свой вы-
вод), и какая страница является видимой (т.е. отображается на эк-
ране).
С помощью функции setviewport вы можете задать графическое
окно ("фактический" прямоугольный "экран"). Вы задаете позицию
окна в абсолютных координатах экрана и определяете необходимость
буферизации этого окна. Для очистки окна вы можете использовать
clearviewport. С помощью getviewsettings вы можете определить ко-
ординаты окна в абсолютных координатах экрана, а также статус бу-
феризации.
С помощью getimage вы можете получить часть экранного обра-
за; с помощью imagesize - вычислить число байт, требуемых для
сохранения этого образа в памяти; а с помощью putimage - восста-
новить этот образ в любом месте экрана.
Координаты для всех функций вывода (рисования, закрашивания,
вывода текста и т.д.) связаны с данным окном.
Кроме того, с помощью getpixel (возвращающей цвет заданной
точки) и putpixel (вычерчивающей заданную точку заданным цветом)
вы можете манипулировать цветом отдельных точек растра.
- 55,56 -
Вывод текста в графическом режиме
---------------------------------
Ниже приведено краткое описание функций, осуществляющих вы-
вод текста в графическом режиме.
=================================================================
gettextsettings возвращает текущие текстовые шрифт, направле-
ние, размер и выравнивание.
outtext выводит строку в текущую позицию (ТП) экрана
outtextxy выводит строку в заданную позицию экрана
registerbgifont регистрирует скомпонованный или загруженный
пользователем шрифт
settextjustify устанавливает величину выравнивания текста, ис-
пользуемую функциями outtext и outtextxy
settextstyle устанавливает текущие текстовые шрифт, стиль и
коэффициент увеличения знаков
setusercharsize устанавливает отношение ширины к высоте для
штриховых (векторных) шрифтов
textheight возвращает высоту строки в точках растра
textwidth возвращает ширину строки в точках растра
=================================================================
Графическая библиотека включает растровый шрифт 8x8 и нес-
колько штриховых (векторных) шрифтов, используемых для вывода
текста в графическом режиме.
# В растровом шрифте каждый символ описывается матрицей то-
чек растра
# В штриховом шрифте каждый символ описывается набором век-
торов, сообщающих графической системе, как вычерчивать
этот символ.
Преимущество в использовании штриховых шрифтов особенно про-
является, когда вы начинаете вычерчивать большие символы. Т.к.
штриховой шрифт задается векторами, то он сохраняет хорошее раз-
решение и качество при его увеличении. С другой стороны, при уве-
личении растрового шрифта, матрица умножается на масштабирующий
коэффициент и при увеличении масштабирующего коэффициента разре-
шение символов становится грубым. Для маленьких символов растро-
вый шрифт может быть достаточно эффективным, но для увеличенных
текстов вам лучше выбрать штриховой шрифт.
- 57,58 -
С помощью outtext и outtextxy вы можете выводить графический
текст, а с помощью settextjustify - управлять выравниванием выво-
димого текста (относительно ТП). С помощью settextstyle вы можете
выбрать символьный шрифт, направление (горизонтальное или верти-
кальное) и размер (масштаб). Для того чтобы получить текущие па-
раметры текста, вызывается функция gettextsettings, которая запи-
сывает в структуру textsettings текущие текстовый шрифт,
выравнивание, увеличение и направление. Функция setusercharsize
позволяет модифицировать ширину и высоту векторных шрифтов.
Если буферизация "включена", весь вывод текстовых строк, вы-
полняемый функциями outtext и outtextxy, будет буферизоваться в
пределах графического окна. Если же буферизация "выключена", то
эти функции будут исключать растровый шрифтовой вывод при выходе
за край окна какой-либо части текстовой строки; вывод векторного
шрифта будет усекаться по край окна.
Функции textheight (которая вычисляет высоту строки в точках
растра) и textwidth (которая вычисляет ширину строки в точках
растра) можно использовать для определения размера на экране за-
данной текстовой строки.
Принятый по умолчанию растровый шрифт 8x8 встроен в графи-
ческий пакет, поэтому во время работы программы он всегда досту-
пен. Штриховые шрифты хранятся каждый в отдельном файле .CHR; они
могут быть загружены во время выполнения программы или преобразо-
ваны в файлы .OBJ (с помощью утилиты BGIOBJ) и скомпонованы с ва-
шим файлом .EXE.
Обычно функция settextstyle загружает шрифтовой файл пос-
редством выделения памяти для шрифта и загрузки с диска соответс-
твующего файла .CHR. В качестве альтернативы этой динамической
схеме загрузки вы можете скомпоновать файл символьного шрифта
(или несколько таких файлов) непосредственно в ваш исполняемый
файл. Для этого, во-первых, вы преобразуете файл .CHR в файл .OBJ
(с помощью утилиты BGIOBJ), а затем помещаете в текст вашей прог-
раммы вызов функции registerbgifont (перед обращением к
settextstyle) для регистрации символьного шрифта. При компоновке
вашей программы вы должны скомпоновать файлы .OBJ для тех штрихо-
вых шрифтов, которые вы зарегистрировали.
Замечание: Использование registerbgifont является углублен-
ным методом программирования, и поэтому не рекомендуется для на-
- 59,60 -
чинающих программистов. Более детально эта функция описана в При-
ложении D Справочного руководства.