- •12 Графические возможности языка Паскаль
- •12.1 Управление графическим режимом
- •12.1.1 Процедуры управления графическим режимом
- •12.1.2 Функции управления графическим режимом
- •12.2 Процедуры управления экраном, окном, страницей
- •12.3 Управление цветом и палитрой
- •12.3.1 Процедуры управления цветом и палитрой
- •12.3.2 Функции управления цветом и палитрой
- •12.4 Работа с точками
- •12.4.1 Процедура работы с точками
- •12.4.2 Функции работы с точками
- •12.5 Процедуры работы с линиями
- •12.6 Процедуры построения фигур из линий
- •12.7 Процедуры построения криволинейных фигур
- •12.8 Работа с текстом в графическом режиме
- •12.8.1 Процедуры работы с текстом
- •12.8.2 Функции работы с текстом
- •12.9 Обмен с памятью
- •12.9.1 Процедуры обмена с памятью
- •12.9.2 Функция обмена с памятью
12 Графические возможности языка Паскаль
Модуль Graphсодержит типы, константы, переменные и подпрограммы, позволяющие создаватьизображенияс использованием широкого набора графических адаптеров.
При работе с этими адаптерами весь экран разбивается на отдельные «точки» — пиксели, которые можно закрасить в тот или иной цвет. Каждый пиксель имеет две координаты:XиY. КоординатаXувеличиваетсяпо горизонтали слева направо, начиная от 0, координатаYувеличивается по вертикали сверху вниз— также от 0, т.е. левый верхний пиксель имеет координаты (0,0). Количество пикселей зависит оттипа адаптераирежимаегоработы.
Для формирования изображений выделяется одна или несколько (до 4) страниц видеопамяти. В каждый момент времени лишь одна из них является видимой, передающей изображение на экран дисплея, и одна являетсяактивной— на ней можно формировать изображение. Видимая и активная страницымогут не совпадать, поэтому можно, например, сначала подготовить изображение на активной (но невидимой) странице, а затем вывести его на экран.
Так же как и в текстовом режиме (модуль CRT), модульGraphпозволяет выделять окна на экране дисплея. Графические процедуры и функции в этом случае используют координаты в пределах окна, причем левый верхний угол окна получает координаты (0,0).
В отличие от текстового режима в графическом режиме курсор, определяющий место на экране, с которого начинается изображение фигуры или текста,невидим, однако его можно переместить в любую точку окна экрана, посмотреть значения координат курсора и т.д.
12.1 Управление графическим режимом
12.1.1 Процедуры управления графическим режимом
Procedure ...
InitGraph ( var Driver, Mode : Integer ; Path : String ) ; | |
— |
инициализирует графическуюсистему, устанавливает графический режим, устанавливает исходные значения текущего указателя, палитры, цвета и т.д. Driver— переменная, в которую необходимо записать код требуемого графического драйвера или Detect = 0, если требуется автоматическое определение драйвера. Mode— переменная, в которую процедура помещает код графического режима для данного драйвера (максимально возможный, если не указать иное). Path — строка, содержащая путь к драйверу — если строка пустая, считается, что драйвер находится в текущем каталоге (папке). Если Driver = Detect, то выполняется вызов процедурыDetectGraph(см. ниже), загружается определенный этой процедурой драйвер и устанавливается определенный ею режим. В случае аварийной ситуации процедура устанавливает один из следующих кодов ошибки: -2, -3, -4, -5, -10 (см. ниже функцию GraphResult). |
Closegraph; | |
— |
завершает работу в графическом режиме и осуществляет переход в текстовый режим работы экрана. |
Пример 12.1(инициализация графики с автоматическим определением драйвера и максимально возможного режима для него … выход из графического режима):
Uses Graph ;
Var
Driver, Mode : Integer ;
Begin
Driver := Detect ;
InitGraph ( Driver, Mode, ’’ ) ;
. . .
CloseGraph
End.
DetectGraph ( var Driver, Mode : Integer ) ; | |
— |
проверяет наличие соответствующего оборудования и определяет, какой графический драйвер и максимально возможный режим его работы можно использовать, возвращает эти значения в качестве параметров вызвавшей ее процедуре InitGraph (единственной причиной непосредственного вызова процедуры DetectGraphявляется последующая замена выбираемого ею драйвера). Driver— переменная, в которую процедура помещает код требуемого графического драйвера. Mode— переменная, в которую процедура помещает код графического режима или -2 в случае аварийной ситуации. В случае аварийной ситуации (у компьютера нет графического адаптера или нет драйвера для него) процедура устанавливает код ошибки: -2 (см. GraphResult). |
Пример 12.2(в случае идентификации драйвераVGAзагружается другой драйвер —EGA64и режимEGA64HIдля него):
. . .
Driver := Detect ;
DetectGraph ( Driver, Mode ) ;
If Driver = VGA then
Begin
Driver := EGA64 ;
Mode := EGA64HI
End ;
InitGraph ( Driver, Mode , ’ C:\BIN ’ ) ;
. . .
SetGraphMode ( Mode : Integer ); | |
— |
задает новый графический режим для выбранного драйвера, устанавливает исходные значения текущего указателя, палитры, цвета и т.д., очищает экран. Mode— графический режим. В случае аварийной ситуации процедура устанавливает код ошибки: -10 (см. GraphResult). |
GetModeRange ( Driver : Integer, var LoMode, HiMode : Integer ) ; | |
— |
возвращает минимальный и максимальный номера графических режимов указанного драйвера. Driver— код драйвера. LoMode— переменная, в которую записывается минимальный номер режима. HiMode — переменная, в которую записывается максимальный номер режима. Если Driverзадан неверно, параметрыLoModeиHiModeполучают значение: -1. |
GraphDefaults ; | |
— |
сбрасывает заданные пользователем параметры графического режима и устанавливает исходные (определяемые при запуске процедуры InitGraph). |
RestoreCRTMode; | |
— |
производит кратковременный возврат в текстовый режим. |