Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Развёрнутые лекции по Паскалю.doc
Скачиваний:
8
Добавлен:
01.03.2025
Размер:
512.51 Кб
Скачать

31.Основы работы в графическом режиме

Работа на ПЭВМ в графическом режиме требует знания ряда сущес-

твенных особенностей, без знания которых нельзя создавать графичес-

кие образы на экране. Каковы эти особенности?

а)Мониторы ПЭВМ, работающие почти одинаково в текстовом режи-

ме, существенно отличаются при работе в графическом режиме. На се-

годня известно несколько конструкций мониторов. Наиболее широко ис-

пользуются следующие мониторы:

->CGA-Color Graphics Adapter.

->EGA-Enhanced Graphics Adapter (усиленный).

->VGA-Video Graphics Array.

Они отличаются количеством воспроизводимых цветов, количеством

точек (пикселей на оси X и Y) и рядом других особенностей.

->CGA ┬ 4 цвета 320*200 точек.

└ 2 цвета 640*200 точек.

->EGA - 16 цветов 640*350 точек.

->VGA - 16 цветов 640*480 точек.

->SVGA -16 цветов 1024*768 точек.

Для работы с тем или иным монитором в графическом режиме су-

ществует специальные файлы-драйверы мониторов. Они имеют расширение

BGI - Borland Graphics Interfase. При работе в графическом режиме

соответствующий драйвер должен находиться в активном каталоге или

его местоположение должно быть указано.

->CGA.BGI - для мониторов CGA, MCGA.

->EGAVGA.BGI - для мониторов EGA и VGA.

Есть драйверы и для других мониторов.

б)Все графические процедуры и функции, разработанные на сегод-

ня, находятся в отдельном блоке Graph.Tpu, поэтому для работы необ-

ходимо, чтобы файл с этой библиотекой находился в активном каталоге

или его местоположение должно быть указано в опциях компилятора.

в)Для перехода из текстового режима существует ряд процедур,

назначение которых заключается в том, чтобы определить тип монитора

и в зависимости от него установить тот или иной режим работы, пос-

кольку каждый монитор может работать в нескольких графических режи-

мах. Простейший переход из текстового режима в графический можно

сделать следующим образом.

Пример 92.

Var Driver,Mode:Integer;

Begin

Ddriver:=Detect;

InitGraph(Driver,Mode,'');

Mode:=<режим>; │

путь до драйвера *.BGI монитора указывается в

том случае, если он не в активном каталоге.

Для обратного перехода надо записать в программе процедуру:

CloseGraph;

Для временного перехода из графического режима в текстовый и

обратно существуют процедуры:

RestoreCrtMode;

SetGraphMode;

г)В графическом режиме нет курсора. Поэтому, если он нужен,

его нужно рисовать программным способом.

д)После перехода в графический режим необходимо произвести ус-

тановки стиля линий, стиля текста и его выравнивание, ширину линий,

вид штриховки, фон и цвет линий, символов и т.д.

Примечание:

В графическом режиме можно использовать процедуры модуля Crt,

а также ввода/вывода, если отключить прямой доступ к видеопамяти

через BIOS с помощью оператора: DirectVideo:=False;

32.УСТАНОВКИ В ГРАФИЧЕСКОМ РЕЖИМЕ

Для установки различных режимов предусмотрены следующие проце-

дуры:

=>SetColor(Color:Word); - Устанавливает цвет линий, текста (0..15).

=>SetBkColor(Color:Word); - Устанавливает цвет фона экрана (0..15).

Фон может быть только один на экране.

=>ClearDevice; - очистка экрана.

=>SetViewPort(X1,Y1, X2,Y2:Integer; Clip: Boolean); - Устанавливает

границы прямоугольного окна:

X1,Y1 - Левый верхний угол.

X2,Y2 - Правый нижний угол.

Clip ─┬─ ClipOn(True) - Удалить ────┐

└─ ClipOff(False) - Оставить ─┴─ изображение вне окна.

=>ClearViewPort; - Очистка окна.

=>SetLineStyle(LineStyle,Pattern,Thickness:Word); - Устанавливает:

стиль LineStyle, образец Pattern и толщину Thickness линии:

LineStyle: 0 - Сплошная.

1 - Точечная.

2 - Прерывистая.

3 - Прерывистая.

4 - Определяемая пользователем.

Pattern: $C000

│1010│0000│0000│0000│ - Для построения образца надо взять от-

резок из 16 точек и установить (1) свечение точки или нет (0).

Thickness: 1 - Нормальная.

3 - Утолщенная в 3 раза.

Второй параметр используется, если первый имел значение 4.

=>SetWriteMode(WritMode:Integer); - Устанавливает режим наложения

линий:

WriteMode: 0 - Mov.

1 - Xor.

2 - Or.

3 - And.

4 - Not.

=>SetTextStyle(Font,Direction,CharSize:Word); - Устанавливает шрифт

Font, направление выдачи текста Direction и размер символов выводи-

мых CharSize:

Font: 0 - 8*8 - Точечный шрифт.

1 - TriplexFont - Утроенный шрифт.

2 - SmallFont - Маленький шрифт.

3 - SansSerifFont - Прямой шрифт.

4 - GothikFont - Готический шрифт.

Direction: 0 - Слева направо.

1 - Снизу вверх.

CharSize: 0 - Определяемый пользователем.

1 - Стандарт для Font=0.

4 - Стандарт для других фонтов.

1..10 - Возможные значения.

Для работы со штриховыми фонтами необходимо, чтобы файл шрифта

выбранного фонта был в текущем каталоге. Это Trip.Chr; Litt.Chr;

Sans.Chr; Goth.Chr.

=>SetTextJustity(Horis,Vert:Word); - Устанавливает горизонтальное и

вертикальное выравнивание текста:

Horiz: 0 - Левое.

1 - Центрирование.

2 - Правое.

Vert: 0 - Нижнее.

1 - Центрирование.

2 - Верхнее.

=>SetUserCharSize(Mx,Dx,My,Dy:Word); - Изменяет ширину и высоту си-

мволов для фонтов отдельно по высоте и ширине:

Mx:Dx─┬ Отношение, на которое умножается стандартная ширина и

My:Dy─┘ высота фонта.

=>SetFillStyle(Pattern,Color:Word); - Устанавливает стандартный тип

закраски и ее цвет:

Pattern: 0 - Штриховка фоном.

1 - Сплошная.

2 - - - - - -.

3 - //////////.

4 - ////////// - Толстыми.

5 - \\\\\\\\\\ - Толстыми.

6 - \\\\\\\\\\.

7 - + + + + + +.

8 - * * * * * *.

9 - ++++++++++ - Частыми.

10 - ............

11 - ........... - Частыми.

12 - Пользовательская.

=>SetFillPattern(Pattern:FillPatternType; Color:Word); - Устанавли-

вает пользовательский тип Pattern и цвет Color:

┌────────┐

│ xxxx │ - $1E

│ xx xx │ - $36

│ xx xx │ - $66

│ xx xx │ - $66

│ xx xx │ - $66

│ xxxxxx │ - $7E

│ xx xx │ - $66

│ xx xx │ - $66.

└────────┘

FillPatternType = Array [1..8] Of Byte;

33.ЛИНИИ И ТОЧКИ, ТЕКСТ

=>GetX:Integer; - Получает текущее значение координаты X.

=>GetY:Integer; - Получает текущее значение координаты Y.

=>MoveTo(X,Y:Integer); - Устанавливает новые координаты X и Y.

=>MoveRel(Dx,Dy:Integer); - Смещает текущие координаты на Dx и Dy.

=>PutPixel(X,Y:Integer;Color:Word); - Выдает на экран точку с коор-

динатами X,Y и цветом Color.

=>GetPixel(X,Y:Integer):Word; - Определяет цвет точки с координата-

ми X,Y.

=>Line(X1,Y1,X2,Y2:Integer); - Проводит прямую линию из точки с ко-

ординатами X1,Y1 в точку X2,Y2.

=>LineTo(X,Y:Integer); - Проводит прямую линию из текущей точки в

точку с координатами X,Y.

=>LineRel(Dx,Dy:Integer); - Проводит прямую линию из текущей точки

в точку, отстоящую на Dx,Dy.

=>OutText(S:String); - Выдает строку S, начиная с текущей позиции

курсора.

=>OutTextXY(X,Y:Integer;S:String); - Выдает строку S, начиная с то-

чки с координатами X,Y.

Напомним, что перед выводом точек, линий и текста необходимо

установить цвет текста и экрана (фона), стиль линий и текста.