
- •1.Алфавит языка паскаль
- •9.6.Функции определения порядка
- •10.Тип вещественный
- •12.Операторы
- •12.1.Простые операторы
- •13.2.Вывод данных на монитор
- •13.3.Форматирование при выводе данных
- •17.1.Объявление и вызов подпрограмм
- •19.Блоки (модули) в паскале
- •19.1.Блок Crt (Unit Crt)
- •23.1.Работа с текстовыми файлами
- •24.Динамическая память
- •640 Кбайт ┌───────────────────┐
- •26.Динамические библиотеки
- •28.Тип объект (класс)
- •30.Встроенный ассемблер
- •30.1.Объявление операндов
- •31.Основы работы в графическом режиме
- •34.Многоугольники
- •35.Криволинейные фигуры
- •39.Команды работы редактора
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.
Напомним, что перед выводом точек, линий и текста необходимо
установить цвет текста и экрана (фона), стиль линий и текста.