Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Стандартный модуль работы с графическим экраном Graph




1) назначение модуля

Подключаются процедуры и функции по работе с экраном в графическом режиме, т.е. когда доступной становится любая точка (пиксель) экрана. Для их использования необходимо:

  • подключить раздел графических подпрограмм Турбо-Паскаля, что выполняется в самом начале раздела описаний оператором USES Graph;
  • инициализировать графику в выполняемом блоке, для чего загрузить в память драйвер управления монитором в графическом режиме. Это делается процедурой InitGraph(...). Далее выполняется выбор цветов и характеристик графических примитивов (точек, линий, стандартных фигур и полигонов, символов текста) и изображаются нужные объекты, с помощью стандартных процедур и функций. По окончании работы графический режим монитора выключается (закрытием графики процедурой CloseGraph).

2) координаты экрана

Определяются возможностями видеосистемы ПЭВМ. Обычно стараются использовать наилучший возможный режим экрана

{ *** функции, связанные с координатами *** }

function GetX: integer; – получить текущую координату X;

function GetY: integer; – получить текущую координату Y;

function GetMaxX: integer; – получить максимально возможную координату экрана по X;

function GetMaxY: integer; – получить максимально возможную координату экрана по Y;

3) управление графическим режимом

{ *** определение, инициализация и восстановление текстового режима *** }

procedure DetectGraph (var GraphDriver, GraphMode: integer); – получение возможного типа драйвера и графического режима по установленным аппаратным средствам;

procedure InitGraph (var GraphDriver: integer;

var GraphMode: integer;

PathToDriver: String); – инициализировать графический режим экрана;

function GetMaxMode: integer; – получение наилучшего графического режима для данной ПЭВМ;

procedure SetGraphMode (Mode: integer); – задание графического режима;

function GetGraphMode: integer;– получение текущего графического режима;

procedure GraphDefaults; – установление графических параметров по-умолчанию (стандартных)

procedure RestoreCrtMode; – возвращение экрана в состояние, которое было до установления графики

procedure CloseGraph; – закрытие графического режима.

 

{ Коды завершений графических операций: }

grOk = 0; – без ошибок.

grNoInitGraph = -1; – не загружен драйвер графического режима.

grNotDetected = -2; – не определен тип видеокарты.

grFileNotFound = -3; – не найден файл с драйвером.

grInvalidDriver = -4; – ошибка работы драйвера.

grNoLoadMem = -5; – не хватает места в ОП для загрузки драйвера.

grNoScanMem = -6; – выход за пределы памяти при сканирующем заполнении

grNoFloodMem = -7; – выход за пределы памяти при заливке.

grFontNotFound = -8; – не найден заказанный шрифт.

grNoFontMem = -9; – не хватает места в ОП для загрузки шрифта.

grInvalidMode = -10; – неверный режим графики.

grError = -11; – ошибка графической операции.

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

grInvalidFont = -13; – ошибка в файле шрифта.

grInvalidFontNum = -14; – недопустимый номер шрифта.

 

{ *** Функции, возвращающие сведения об ошибках *** }

function GraphErrorMsg (ErrorCode: integer): String; – название ошибки по коду;

function GraphResult: integer; – код ошибки последней графической операции.

 

4) управление экраном и окном

{ *** экран, окна, сохранение и восстановление окон *** }

procedure ClearDevice; – очиска грфического экрана цветом фона. Текущий указатель в левом верхнем углу;

procedure SetViewPort (x1, y1, x2, y2: integer; Clip: boolean); – задание границ окна и типа отсечения;

procedure GetViewSettings (var ViewPort: ViewPortType); – получить характеристики окна;

procedure ClearViewPort; – очистить окно цветом фона;

procedure SetVisualPage (Page: word); – задает номер отображаемой графической страницы;

procedure SetActivePage (Page: word); – устанавливает для графического вывода активную страницу.

 

{ *** сохранение/восстановление части экрана *** }

function ImageSize (x1, y1, x2, y2: integer): word; – определить размер ОП для прямоугольника;

procedure GetImage (x1, y1, x2, y2: integer; var BitMap); – сохранить в ОП образ прямоугольника;

procedure PutImage (X, Y: integer; var BitMap; BitBlt: word); – восстановить прямоугольник из ОП.

 

5) управление цветом

{ константы изображения цветов: }

 

Таблица 27. Кодировка цветов

Код Имя константы Цвет
  Black Черный (прозрачный)
  Blue синий
  Green зеленый
  Cyan голубой
  Red красный
  Magenta фиолетовый
  Brown коричневый
  LightGray светло-серый
  DarkGray темно-серый
  LightBlue светло-голубой
  LightGreen светло-зеленый
  LightCyan светло-синий
  LightRed светло-красный
  LightMagenta светло-фиолетовый (розовый)
  Yellow светло-коричневый(желтый)
  White белый

 

{ *** процедуры работы с цветом *** }

procedure SetBkColor (ColorNum: word); – установить цвет фона;

procedure SetColor(Color: word); – установить цвет рисования

function GetBkColor: word; – получить цвет фона;

function GetColor: word; – получить текущий цвет рисования;

function GetMaxColor: word; – получить максимально-возможное число цветов.

 

6) вывод точек

{ *** процедуры работы с точкой *** }

procedure PutPixel (X, Y: integer; Pixel: word); – поставить на экране точку (X,Y) заданным цветом (pixel);

function GetPixel (X, Y: integer): word; – получить цвет точки с координатами (Х,Y).

 

7) вывод линий

{ типы и толщины линий для процедур Get/SetLineStyle: }

SolidLn = 0; { сплошная };

DottedLn = 1; { пунктирная };

CenterLn = 2; { штрих-пунктирная (осевая) };

DashedLn = 3; { штриховая };

UserBitLn = 4; { задаваемая пользователем };

NormWidth = 1; { нормальная (тонкая) };

ThickWidth = 3; { толстая }.

 

{ *** процедуры перемещений и проведения отрезков линий *** }

procedure LineTo (X, Y: integer); – линия из текущей точки в (X, Y);

procedure LineRel (Dx, Dy: integer); – линия из текущей точки в точку, смещенную на (Dx, Dy);

procedure MoveTo (X, Y: integer); – переход в точку (X, Y);

procedure MoveRel (Dx, Dy: integer); – переход из текущей точки в точку, смещенную на (Dx,Dy);

procedure Line (x1, y1, x2, y2: integer); – линия из точки (x1,y1) в точку (x2,y2);

procedure GetLineSettings (var LineInfo: LineSettingsType); – получить текущие настройки рисования линий;

procedure SetLineStyle (LineStyle: word;

Pattern: word;

Thickness: word); – задать текущие настройки рисования линий.

 

8) вывод и закраска контуров

{ *** многоугольники, их закраска и текстуры *** }

procedure Rectangle (x1, y1, x2, y2: integer); – построить незакрашенный прямоугольник;

procedure Bar (x1, y1, x2, y2: integer); – построить закрашенный прямоугольник;

procedure Bar3D (x1, y1, x2, y2: integer; Depth: word; Top: boolean); – построить паралелепипед;

procedure DrawPoly (NumPoints: word; var PolyPoints); – построить контур многоугольника из NumPoints точек;

procedure FillPoly (NumPoints: word; var PolyPoints); – построить закрашенный многоугольник из NumPoints точек;

procedure GetFillSettings (var FillInfo: FillSettingsType); – получить текущие характеристики закраски;

procedure GetFillPattern (var FillPattern: FillPatternType); – получить текущие характеристики текстуры;

procedure SetFillStyle (Pattern: word; Color: word); – задать характеристики закраски;

procedure SetFillPattern (Pattern: FillPatternType; Color: word);– задать характеристики текстуры;

procedure FloodFill (X, Y: integer; Border: word); – залить область текущей закраской от заданной точки (X,Y) до границы, заданной цветом (Border).

 

9) окружности, эллипсы, дуги

{ *** построение окружностей, эллипсов и их частей *** }

procedure Arc (X, Y: integer; StAngle, EndAngle, Radius: word); – построение дуги окружности;

procedure GetArcCoords (var ArcCoords: ArcCoordsType); – получение параметров дуги окружности;

procedure Circle (X, Y: integer; Radius: word); – построение окружности заданного радиуса и центра;

procedure Ellipse (X, Y: integer;

StAngle, EndAngle: word;

XRadius, YRadius: word); – построение дуги эллипса;

procedure FillEllipse (X, Y: integer;

XRadius, YRadius: word); – построение закрашенного эллипса.

 

procedure GetAspectRatio (var Xasp, Yasp: word); – получение относительного разрешения по X и Y;

procedure SetAspectRatio (Xasp, Yasp: word); – задание относительного разрешения по X и Y;

procedure PieSlice (X, Y: integer; StAngle, EndAngle, Radius: word); – построение закрашенного сектора круга;

procedure Sector (X, Y: Integer;

StAngle, EndAngle,

XRadius, YRadius: word); – построение закрашенного сектора эллипса.

 

10) вывод текста

{ константы для процедур Set/GetTextStyle }

DefaultFont = 0; { шрифт по-умолчанию };

TriplexFont = 1; { "оттененный" шрифт };

SmallFont = 2; { мелкий шрифт };

SansSerifFont = 3; { шрифт "сан-сериф"};

GothicFont = 4; { готический шрифт };

HorizDir = 0; { текст слева–направо };

VertDir = 1; { текст снизу–вверх };

 

{ размещение текста относительно заданной точки }

LeftText = 0; { текст влево от точки };

CenterText = 1; { точка в центре текста };

RightText = 2; { текст вправо от точки };

BottomText = 0; { текст под точкой };

 

{ CenterText = 1; уже определено выше }

TopText = 2; { текст над точкой };

UserCharSize = 0; { размер шрифта задается программистом }.

 

{ признаки отсечения фигур при выходе за пределы окна }

ClipOn = true; – за границами окна фигура не видна;

ClipOff = false; – за границами окна фигура видна;

 

{ *** процедуры вывода текста *** }

procedure GetTextSettings (var TextInfo: TextSettingsType); – получить текущие настройки вывода текста;

procedure OutText (TextString: string); – вывести текст относительно текущей точки;

procedure OutTextXY (X, Y: integer; TextString: string); – вывести текст относительно точки (X,Y);

procedure SetTextJustify (Horiz, Vert: word); – установить параметры центровки (размещения) текста;

procedure SetTextStyle (Font, Direction: word; CharSize: word); – выбрать шрифт, его размер и направление вывода текста;

procedure SetUserCharSize (MultX, DivX, MultY, DivY: word); – задать размер шрифта программиста;

function TextHeight (TextString: string): word; – получить текущую высоту строки текста;

function TextWidth (TextString: string): word; – получить текущую ширину строки текста.

Разбор контрольного варианта № 31

Задание

Построить график функции Y=exp(X) для интервала X от –1 до 2, нанести на график размеченные оси координат и сделать подпись (название функции).

Дополнительные требования: график изобразить толстой штриховой линией красного цвета на белом фоне, координатные оси (толстая линия) и разметка (тонкая линия) – черного (темно-серого) цвета, подпись – синего цвета под графиком посередине.

Программу составить для EGA и VGA адаптеров (универсальную). Драйвер графического адаптера (с именем EGAVGA.BGI) находится в каталоге D:\TP6\BGI.

Условия, принятые из соображений дизайна:

График будет занимать 60% ширины и высоты экрана. Разметку проводим через 0.5 по Х и через 1.0 по Y. График рисуем процедурой LineTo, с шагом 0.2 по оси X.

Таблица идентификаторов

Таблица 28. Идентификаторы задачи 31-го варианта

Имя Тип Размер, (байт) Назначение
Graph_work Имя программы - Построение графика функции
Graph Имя модуля - Стандартные графические подпрограммы
Crt " - Стандартные подпрограммы работы с консолью
Print " - Стандартные подпрограммы работы с принтером
X Веществен.   Текущее значение аргумента
Y " " Текущее значение функции
Xmin " " Минимальное значение аргумента
Xmax " " Максимальное значение аргумента
Ymin " " Минимальное значение функции
Ymax " " Максимальное значение функции
DeltaX " " Диапазон изменения аргумента
DeltaY " " Диапазон изменения функции
Dx " " Шаг аргумента для расчета графика функции
Dxs " " Шаг разметки оси Х
Dys " " Шаг разметки оси Y
Part " " Доля экрана, занимаемая графиком
Pole " " Размер полей вокруг графика в долях экрана
Mx " " Коэффициент пересчета Х в J
My " " Коэффициент пересчета Y в I
I Целое   Горизонтальная координата экрана
J " " Вертикальная координата экрана
Imin " " Нижняя граница графика на экране
Imax " " Верхняя граница графика на экране
Jmin " " Левая граница графика на экране
Jmax " " Правая граница графика на экране
JAll " " Размер экрана по Х в пикселах
Iall " " Размер экрана по Y в пикселях
J0 " " Координата оси Y на экране
I0 " " Координата оси Х на экране
DeltaJ " " Размер рисунка по Х
DeltaI " " Размер рисунка по Y
Nx " " Шаг между рисками оси Х в пикселях
Ny " " Шаг между рисками оси Y в пикселях
Riska Строка   Подпись текущей риски оси
GraphDrv Целое   Тип графического драйвера
GraphMode " " Номер графического режима
Code беззнаковое " Код завершения процедуры инициализ. граф.
InitGraph Имя процедуры - Инициализация графического режима
GraphResult Имя функции - Возвращает код завершения граф. процедуры
ClearDevice Имя процедуры - Очистка экрана заданным цветом фона
Halt Имя процедуры - Останов (завершение) программы
SetBkColor Имя процедуры - Установка цвета фона
SetColor Имя процедуры - Установка цвета
SetLineStyle Имя процедуры - Установка типа линии
SetTextStyle Имя процедуры - Установка стиля текста
SetTextJustify Имя процедуры - Установка способа размещения текста
GetMaxX Имя функции - Возвращает размер экрана по Х
GetMaxY Имя функции - Возвращает размер экрана по Y
Round Имя функции - Округляет вещественный аргумент в целое
MoveTo Имя процедуры - Переход в заданную точку экрана
LineTo Имя процедуры - Проведение отрезка в заданную точку
Line Имя процедуры - Проведение отрезка
OutTextXY Имя процедуры - Вывод текста
Str Имя процедуры - Преобразование числа в строку с его изображен.
KeyPressed Имя функции - Возвращает TRUE, если нажата клавиша
CloseGraph Имя процедуры - Закрытие графического режима
Pr Имя процедуры - Копирование графического экрана на принтер



Поделиться с друзьями:


Дата добавления: 2014-11-06; Просмотров: 369; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.051 сек.