Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Стандартный модуль работы с графическим экраном Graph
1) назначение модуля Подключаются процедуры и функции по работе с экраном в графическом режиме, т.е. когда доступной становится любая точка (пиксель) экрана. Для их использования необходимо:
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. Кодировка цветов
{ *** процедуры работы с цветом *** } 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
|