![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Глава 11.Стандартный модуль работы с текстовым экраном Crt
Использование экрана дисплея в модуле Crt Назначение модуля Модуль Crt предназначен для работы со стандартными устройствами ввода и вывода в нестандартных режимах. Пояснения: стандартный режим системных устройств ввода/вывода выполняется через процедуры и функции операционной системы, нестандартный режим - через функции, записанные в ПЗУ BIOS и прямо через видеопамять. В этом модуле есть процедуры работы с экраном (в текстовом режиме), с клавиатурой, со звуком и отдельная процедура задержки. Координаты экрана При работе с экраном, как и в стандартном режиме, экран разбивается на строки, каждая строка - на одинаковые прямоугольные позиции (знакоместа). В каждую позицию можно поместить один символ. Знакоместа задаются двумя координатами: номером строки и номером столбца (номером символа в строке). Строки нумеруются сверху экрана вниз, начиная с 1, столбцы - слева направо, также начиная с 1. Модуль Crt позволяет работать с любым прямоугольным окном экрана. Окна задаются координатами двух углов Работа с текстом Работа с цветом При выводе символа прямоугольник знакоместа можно закрасить цветом фона, а сам символ изображать цветом переднего плана. Работа со звуком Пример программы Глава 12.Стандартный модуль работы с графическим экраном Graph Назначение модуля Чтобы использовать графику в программах на Турбо-Паскале необходимо научиться планировать размещение на экране выводимой информации (т.е. разобраться в алгоритме вывода графических объектов на экран) и уметь подключать и использовать стандартные графические процедуры и функции Турбо-Паскаля. Рассмотрим последовательно обе эти проблемы. Для начала следует твердо усвоить, что экран дисплея может использоваться или в текстовом или в графическом режиме, но только не в обоих одновременно. Стандартное состояние экрана при работе в Турбо-Паскале (рассчитанном на операционную систему DOS) – в текстовый режим. При этом никакой графический вывод на экран невозможен, попытки вызова процедур графики приведут к ошибке и останову программы. После инициализации графики, бесполезными будут обращения к процедурам вывода на экран текстовой информации (с помощью Write и WriteLn), правда, без всяких сообщений и прерываний выполнения программы.
Перевод дисплея в графический режим (инициализация графики) позволяет получить доступ к любой точке экрана. При этом система координат экрана начинается в левом верхнем углу с точки, имеющей координаты 0,0. Ось Х направлена слева направо, ось У – сверху вниз. Каждая точка экрана имеет две координаты Х и У и какой-то цвет из допустимой палитры. Такая точка называется пикселем. В зависимости от состава аппаратных средств ПЭВМ, на экране максимально может помещаться или 350 (для EGA-адаптера), или 480 (для VGA-адаптера) строк по 640 пикселей в каждой строке. Палитра обычно содержит 16 цветов. Подключаются процедуры и функции по работе с экраном в графическом режиме, т.е. когда доступной становится любая точка (пиксель) экрана. Для их использования необходимо: · подключить раздел графических подпрограмм Турбо-Паскаля, что выполняется в самом начале раздела описаний оператором USES Graph; · инициализировать графику в выполняемом блоке, для чего загрузить в память драйвер управления монитором в графическом режиме. Это делается процедурой InitGraph(...). Далее выполняется выбор цветов и характеристик графических примитивов (точек, линий, стандартных фигур и полигонов, символов текста) и изображаются нужные объекты, с помощью стандартных процедур и функций. По окончании работы графический режим монитора выключается (закрытием графики процедурой CloseGraph).
Координаты экрана Определяются возможностями видеосистемы ПЭВМ. Обычно стараются использовать наилучший возможный режим экрана { *** функции, связанные с координатами *** } function GetX: integer; – получить текущую координату X; function GetY: integer; – получить текущую координату Y; function GetMaxX: integer; – получить максимально возможную координату экрана по X; function GetMaxY: integer; – получить максимально возможную координату экрана по Y;
Управление графическим режимом
{ *** определение, инициализация и восстановление текстового режима *** } procedure DetectGraph (var GraphDriver, GraphMode: integer); – получение возможного типа драйвера и графического режима по установленным аппаратным средствам;
procedure InitGraph (var GraphDriver: integer; var GraphMode: integer; PathToDriver: String); – инициализировать графический режим экрана; 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; – код ошибки последней графической операции.
Управление экраном и окном
{ *** экран, окна, сохранение и восстановление окон *** } procedure ClearDevice; – очиска грфического экрана цветом фона. Текущий указатель в левом верхнем углу; procedure SetViewPort (x1, y1, x2, y2: integer; Clip: boolean); – задание границ окна и типа отсечения; procedure ClearViewPort; – очистить окно цветом фона;
{ *** сохранение/восстановление части экрана *** } 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); – восстановить прямоугольник из ОП.
Управление цветом
{ константы изображения цветов: }
Таблица 1. Кодировка цветов
{ *** процедуры работы с цветом *** } procedure SetBkColor (ColorNum: word); – установить цвет фона; procedure SetColor(Color: word); – установить цвет рисования function GetBkColor: word; – получить цвет фона; function GetColor: word; – получить текущий цвет рисования;
Вывод точек
{ *** процедуры работы с точкой *** } procedure PutPixel (X, Y: integer; Pixel: word); – поставить на экране точку (X,Y) заданным цветом (pixel); function GetPixel (X, Y: integer): word; – получить цвет точки с координатами (Х,Y).
Вывод линий
{ типы и толщины линий для процедур 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 SetLineStyle (LineStyle: word; Pattern: word; Thickness: word); – задать текущие настройки рисования линий.
Вывод и закраска контуров
{ *** многоугольники, их закраска и текстуры *** } procedure Rectangle (x1, y1, x2, y2: integer); – построить незакрашенный прямоугольник; procedure Bar (x1, y1, x2, y2: integer); – построить закрашенный прямоугольник; procedure DrawPoly (NumPoints: word; var PolyPoints); – построить контур многоугольника из NumPoints точек; procedure FillPoly (NumPoints: word; var PolyPoints); – построить закрашенный многоугольник из NumPoints точек; procedure SetFillStyle (Pattern: word; Color: word); – задать характеристики закраски; procedure FloodFill (X, Y: integer; Border: word); – залить область текущей закраской от заданной точки (X,Y) до границы, заданной цветом (Border).
Окружности, эллипсы, дуги
{ *** построение окружностей, эллипсов и их частей *** } procedure Circle (X, Y: integer; Radius: word); – построение окружности заданного радиуса и центра; Вывод текста
{ константы для процедур Set/GetTextStyle } DefaultFont = 0; { шрифт по-умолчанию }; HorizDir = 0; { текст слева–направо }; VertDir = 1; { текст снизу–вверх };
{ размещение текста относительно заданной точки } LeftText = 0; { текст влево от точки }; CenterText = 1; { точка в центре текста }; RightText = 2; { текст вправо от точки }; BottomText = 0; { текст под точкой };
{ CenterText = 1; уже определено выше } TopText = 2; { текст над точкой }; UserCharSize = 0; { размер шрифта задается программистом }.
{ *** процедуры вывода текста *** } 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); – выбрать шрифт, его размер и направление вывода текста;
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 144; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.98.186 (0.036 с.) |