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

Фигуры и стили.

Существует большое число программ для рисования и заполнения фигур, включая точки, линии, окружности, дуги, эллипсы, прямоугольники, многоугольники, полосы, 3-х мерные полосы и сектора. Использование SetLineStyle позволяет управлять толщиной линий и типом: сплошная, точками или тип, определенный Вами.

Использование SetFillStyle и SetFillPattern и FloodFill позволяет заполнять многоугольник штриховкой или другим стилем.

Окна и битовые образы.

Процедура SetViewPort заставляет все выводные команды работать относительно прямоугольной области экрана (окна или поля вывода). Точки, линии, фигуры - весь графический вывод - зависит от определения окна (его координат) до тех пор, пока окно не будет изменено. Другие программы обеспечивают очистку окна и чтение текущего определения окна. Если отсечение активно, весь графический вывод отсекается по границам текущего окна. Заметим, что CP никогда не отсекается.

GetPixel и PutPixel обеспечивают чтение пикселов. GetImage и PutImage могут быть использованы для сохранения и вывода на экран прямоугольной области экрана. Они обеспечивают полный набор битовых операции (копирование, xor, or, and, not).

Обработка ошибок.

Внутренние ошибки в модуле Graph возвращаются функцией GraphResult. GraphResult возвращает код ошибки последней графической операции. Заметим, что GraphResult устанавливается в ноль после его вызова. Следовательно, программист должен запомнить значение GraphResult во временной переменной, а затем проверять его.

Пример простой программы:

program GraphText;

uses

Graph;

var

GraphDriver, GraphMode, ErrorCode : Integer;

begin

GraphDriver :=Detect;

InitGraph(GraphDriver, GraphMode,'c:\tp7\bgi');

ErrorCode :=GraphResult;

if ErrorCode <> grOK then {ошибка }

begin

Writeln('Ошибка инициализации графики');

Writeln('Код ошибки - ',ErrorCode);

ReadLn;

Halt(1);

end;

Rectangle(0,0,639,479);

Line(0,0,639,479);

Line(0,479,639,0);

OutTextXY(100,200,’Нажмите клавишу Enter’);

Readln;

CloseGraph;

end.

Программа начинается с вызова InitGraph, который автоматически определяет аппаратуру и загружает соответствующий графический драйвер. Если графическое устройство не распознано или во время инициализации произошла ошибка, выдается сообщение об ошибке и программа завершается. Иначе, чертится прямоугольник по краю экрана и в центре экрана выводится текст.

Вызов CloseGraph вoсстанавливает видеорежим, который был установлен до вызова InitGraph и освобождает память, используемую графическим драйвером.

Справочник по модулю Graph

 Константы, типы и переменные модуля Graph.

Таблица 1.2. Значения ошибок GraphResult.

-------------------------------------------------------------------

Константа Значение Описание

-------------------------------------------------------------------

grOk 0 нет ошибок

grNoInitGraph -1 графика не инициализированна

(используйте InitGraph)

grNotDetected -2 графическое устройство не обнаружено

grFileNotFound -3 файл драйвера устройства не найден

grInvalidDriver -4 неправильный файл драйвера устройства

grNoLoadMem -5 не достаточно памяти для загрузки

драйвера

grNoScanMem -6 выход за пределы памяти при заполнении

(scan fill)

grNoFloodMem -7 выход за пределы памяти при заполнении

(flood fill)

grFontNotFound -8 файл шрифта не найден

grNoFontMem -9 не достаточно памяти для загрузки

шрифта

grInvalidMode -10 неверный графический режим для этого

драйвера

grError -11 графическая ошибка

grIOerror -12 ошибка графического ввода/вывода

grInvalidFont -13 неверный файл шрифта

grInvalidFontNum -14 неверный номер шрифта

-------------------------------------------------------------------

SetPalette и SetAllPalette

Используйте эти константы цветов с SetPalette и SetAllPalette: 

-------------------------------

Константа Значение

  -------------------------------

Black 0

Blue 1

Green 2

Cyan 3

Red 4

Magenta 5

Brown 6

LightGray 7

DarkGray 8

LightBlue 9

LightGreen 10

LightCyan 11

LightRed 12

LightMagenta 13

Yellow 14

White 15

  -------------------------------

SetRGBPalette.

Эти константы цветов могут быть использованы с  SetRGBPalette

для выбора стандартных EGA цветов на графическом адаптере IBM 8514:

-------------------------------

Константа Значение

  -------------------------------

EGABlack 0 темные цвета 

EGABlue 1

EGAGreen 2

EGACyan 3

EGARed 4

EGAMagenta 5

EGABrown 20

EGALightGray 7

EGADarkGray 56 светлые цвета

EGALightBlue 57

EGALightGreen 58

EGALightCyan 59

EGALightRed 60

EGALightMagenta 61

EGAYellow 62

EGAWhite 63

  -------------------------------

Константы типов линий.

Используйте эти константы типов линий с GetLineSettings и

SetLineStyle: 

-------------------------------

Константа Значение

  -------------------------------

SolidLn 0

DottedLn 1

CenterLn 2

DashedLn 3

UserBitLn 4 Тип линии, определяемый пользователем

NormWidth 1

ThickWidth 3

  -------------------------------

Константы управления шрифтом.

Используйте эти константы с GetTextSettings и SetTextStyle:

-------------------------------

Константа Значение

  -------------------------------

DefaultFont 0 8x8 битовый шрифт

TriplexFont 1 Штриховые шрифты

SmallFont 2

SansSerifFont 3

GothicFont 4

HorizDir 0 слева направо

VertDir 1 снизу вверх

UserCharSize 0 размер символа, определяемый

пользователем

  -------------------------------

Константы выравнивания.

Эти константы управляют горизонтальным и вертикальным

выравниванием для SetTextJustify:

-------------------------------

Константа Значение

  -------------------------------

LeftText 0

CenterText 1

RightText 2

BottomText 0

CenterText 1 (уже определена выше)

TopText 2

  -------------------------------

Константы отсечения.

Используйте эти константы с SetViewPort для управления

отсечением. При ClipOn графический вывод будет отсекаться по

границе окна:

-------------------------------

Константа Значение

  -------------------------------

ClipOn True

ClipOff False

  -------------------------------

Константы полосы.

Эти константы используются с Bar3D, чтобы указать будет ли 3-х

мерная вершина рисоваться на верху полосы:

-------------------------------

Константа Значение

  -------------------------------

TopOn True

TopOff False

  -------------------------------

Константы шаблона заполнения.

Эти шаблоны заполнения используются GetFillSettings и

SetFillStyle. Используйте SetFillPattern для определения Вашего

собственного стиля заполнения, затем вызовите

SetFillStyle(UserFill, SomeColor) и сделайте свой шаблон активным:

--------------------------------------------------------------

Константа Значение

--------------------------------------------------------------

EmptyFill 0 заполняет цветом фона

SolidFill 1 заполняет основным цветом

LineFill 2 --- заполнение

LtSlashFill 3 /// заполнение

SlashFill 4 /// заполнение толстыми линиями

BkSlashFill 5 \\\ заполнение толстыми линиями

LtBkSlashFill 6 \\\ заполнение

HatchFill 7 редкая штриховка

XHatchFill 8 плотная штриховка

InterleaveFill 9 пересекающиеся линии

WideDotFill 10 редкие точки

CloseDotFill 11 плотные точки

UserFill 12 определенный пользователем стиль

--------------------------------------------------------------

Битовые операторы.

Используйте эти битовые операторы с PutImage и SetWriteMode:

--------------------------------------

Константа Значение

--------------------------------------

CopyPut 0 { MOV }

XORPut 1 { XOR }

Используйте эти операции только с PutImage:

OrPut 2 { OR }

AndPut 3 { AND }

NotPut 4 { NOT }

--------------------------------------

Константа палитры.

Эта константа используется GetPalette, GetDefault,

SetAllPalette и определяет запись PaletteType:

-------------------------------

Константа Значение

  -------------------------------

MaxColors 15

  -------------------------------

Типы

Эта запись используется с GetPalette, GetDefaultPalette и

SetAllPalette:

type

PaletteType = record

Size : Byte;

Colors : array (0.. MaxColors) of Shortint;

end;

Эта запись используется с GetLineSettings:

type

LineSettingsType = record

LineStyle : Word;

Pattern : Word;

Thickness : Word;

end;

Эта запись используется с GetTextSettings:

type

TextSettingsType = record

Font : Word;

Direction : Word;

CharSize : Word;

Horiz : Word;

Vert : Word;

end;

Эта запись используется с GetFillSettings:

type

FillSettingsType = record

Pattern : Word;

Color : Word;

end;

Эта запись используется с GetFillPattern и SetFillPattern:

type

FillPatternType = array [1..8] of Byte; { определяемый

пользователем стиль }

Этот тип определен для Вашего удобства. Заметим, что оба поля

типа Integer:

type

PointType = record

X,Y: Integer;

end;

Эта запись используется с GetViewSettings для получения данных

о текущем окне:

type

ViemPortType = integer;

X1, Y1, X2, Y2: Integer;

Clip : Boolean;

end;

Эта запись используется с GetArcCoords и может быть

использована для получения информации о последнем вызове Arc или

Ellipse:

type

ArcCoordsType = record

X, Y : Integer;

Xstart, Ystart: Integer;

Xend, Yend : Integer;

end;

Переменные.

Эти переменные указывают на программы управления кучей модуля

Graph. Если Ваша программа использует собственные программы

управления памятью, присвойте адреса Ваших программ распределения и

освобождения памяти переменным GraphGetMemPrt и GraphFreeMemPrt:

--------------------------------------------------------------

Переменная Значение

--------------------------------------------------------------

GraphGetMemPrt Pointer (распределение кучи)

GraphFreeMemPrt Pointer (освобождение кучи)

--------------------------------------------------------------

Процедуры.

Таблица 12.3. Процедуры модуля Graph.

-------------------------------------------------------------------

Arc Рисует дугу от начального угла к конечному,

используя (X,Y) как центр

Bar Рисует полосу, используя текущий стиль и цвет.

Bar3D Рисует 3-х мерную полосу, используя текущий

стиль и цвет.

Circle Рисует окружность, используя (X,Y) как центр.

ClearDevice Очищает экран и устанавливает текущий указатель

(CP) в начало.

ClearViewPort Очищает окно.

CloseGraph Закрывает графическую систему.

DetectGraph Проверяет аппаратуру и определяет какой

графический драйвер и в каком режиме

используется.

DrawPoly Рисует многоугольник текущим цветом и типом

линии.

Ellipse Рисует эллиптическую дугу от начального угла

к конечному, используя (X,Y) как центр.

FillEllipse Рисует заполненный эллипс, используя (X,Y) как

центр и XRadius и YRadius как горизонтальные

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

FillPoly Заполняет многоугольник, используя

сканирование.

FloodFill Заполняет ограниченную область, используя

текущий шаблон и цвет заполнения.

GetArcCoords Позволяет запросить координаты команды Arc.

GetAspectRatio Возвращает разрешение экрана из которого может

быть вычислен относительный аспект

(Xasp/Yasp).

GetFillPattern Возвращает шаблон заполнения, установленный

последним вызовом SetFillPattern.

GetFillSettings Позволяет запросить текущий шаблон и цвет,

установленные SetFillStyle или SetFillPattern.

GetImage Сохраняет битовый образ указанной части экрана

в буфере.

GetLineSettings Возвращает текущие стиль, шаблон и толщину

линии, установленные SetLineStyle.

GetModeRange Возвращает минимальный и максимальный

графические режимы для данного драйвера.

GetPalette Возвращает текущую палитру и ее размер.

GetTextSettings Возвращает текущий шрифт, направление, размер

и выравнивание текста, установленные

SetTextStyle и SetTextJustify.

GetViewSettings Позволяет запросить текущие параметры окна и

отсечения.

GraphDefaults Устанавливает текущий указатель (CP) в начало

и переустанавливает графическую систему.

InitGraph Инициализирует графическую систему и

устанавливает устройство в графический режим.

Line Рисует линию от (X1,Y1) к (X2,Y2).

LineRel Рисует линию от текущего указателя (CP) к

точке, лежащей на заданном растоянии.

LineTo Рисует линию от текущего указателя к (X,Y).

MoveRel Передвигает текущий указатель (CP) на заданное

расстояние от его текущей позиции.

MoveTo Передвигает текущий указатель (CP) в (X,Y).

OutText Выводит текст на экран от текущего указателя.

OutTextXY Выводит текст на экран.

PieSlice Рисует и заполняет сектор, используя (X,Y) как

центр и рисуя от начального угла к конечному.

PutImage Выводит битовый образ на экран.

PutPixel Рисует точку (пиксел) в (X,Y).

Rectangle Рисует прямоугольник, используя текущий цвет и

тип линии.

RestoreCRTMode Восстанавливает видеорежим, который был до

инициализации графики.

Sector Рисует и заполняет сектор эллипса.

SetActivePage Устанавливает активную страницу для

графического вывода.

SetAllPalette Изменяет цвет палитры.

SetAspectRatio Изменяет значение относительного аспекта.

SetBkColor Устанавливает цвет фона.

SetColor Устанавливает основной цвет, которым будет

осуществляться рисование.

SetFillPattern Выбирает шаблон заполнения, определенный

пользователем.

SetFillStyle Устанавливает шаблон заполнения и цвет.

SetGraphBufSize Позволяет изменить размер буфера для функций

заполнения.

SetGraphMode Переводит систему в графический режим и

очищает экран.

SetLineStyle Устанавливает текущие толщину и стиль линии.

SetPalette Изменяет один цвет палитры, указанный через

ColorNum и Color.

SetRGBPallete Позволяет модифицизовать палитру для IBM 8514

и VGA.

SetTextJustify Устанавливает выравнивание текста,

используемое OutText и OutTextXY.

SetTextStyle Устанавливает текущий шрифт, стиль и размер

текста.

SetUserCharSize Позволяет изменить ширину и высоту символа

для штрихового шрифта.

SetViewPort Устанавливает текущее окно для графического

вывода.

SetVisualPage Устанавливает номер видимой графической

страницы.

SetWriteMode Устанавливает режим вывода (копирование или

XOR) для линий, рисуемых с DrawPoly, Line,

LineRel, LineTo, Rectangle.

-------------------------------------------------------------------

Функции

Таблица 12.4. Функции модуля Graph.

-------------------------------------------------------------------

GetBkColor Возвращает текущий фоновый цвет.

GetColor Возвращает текущий цвет.

GetDefaultPalette Возвращает аппаратную палитру в записи

PaletteType.

GetDriverName Вoзвращает строку с именем текущего драйвера.

GetGraphMode Возвращает текущий графический режим.

SetMaxColor Возвращает максимальный цвет, который можно

задать в SetColor.

GetMaxMode Возвращает номер максимального режима текущего

загруженного драйвера.

GetMaxX Возврашает максимальный Х (разрешение по

горизонтали) для текущего графического

драйвера и режима.

GetMaxY Возвращает максимальный Y (разрешение по

вертикали) для текущего графического

драйвера и режима.

GetModeName Возвращает строку с именем указанного

графического режимаю.

GetPaletteSize Возвращает размер таблицы палитры.

GetPixel Возвращает цвет точки в (X,Y).

GetX Возвращает координату X текущей позиции (CP).

GetY Возвращает координату Y текущей позиции (СР).

GraphErrorMsg Возвращает строку сообщения об ошибке для

заданного кода ErrorCode.

GraphResult Возвращает код ошибки для последней

графической операции.

ImageSize Возвращает число байт, требуемое для

заполнения прямоугольной области экрана.

InstallUserDriver Устанавливает пользовательский драйвер

устройства в BGI таблицу драйверов устройств.

InstallUserFont Устанавливает новый шрифт, который не встроен

в BGI систему.

RegisterBGIdriver Регистрирует драйвер BGI для графической

системы.

RegisterBGIfont Регистрирует шрифт BGI для графической

системы.

TextHeight Возвращает высоту строки в пикселах.

TextWidth Возвращает ширину строки в пикселах.

-------------------------------------------------------------------