Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 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; просмотров: 175; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.15.225.177 (0.009 с.) |