- •Введение
- •Управление экраном в текстовом режиме
- •Установка текстового режима
- •Установка цвета и фона
- •Управление курсором.
- •Управление строками.
- •Управление звуком.
- •Текстовые окна.
- •Использование клавиатуры.
- •Организация меню пользователя. Элементы псевдографики.
- •Виды меню
- •Использование буфера экрана.
- •Управление экраном в графическом режиме.
- •Стандартные подпрограммы для работы в графическом режиме
- •Установка графического режима.
- •InitGraph (var Driver,Mode:integer; DriverPath:string) -
- •Координаты, графические окна.
- •Выбор цвета, стиля заполнения.
- •Геометрия
- •Точки и линии.
- •Многоугольники
- •Дуги, окружности, эллипсы
- •Вывод текста
- •Сохранение и выдача изображений
- •Дополнительные стандартные подпрограммы для работы в графическом режиме. Анализ графического режима
- •Установки графических окон, страницы
- •Выбор палитры, заполнения
- •Геометрия
- •Установки вывода текста.
- •Организация библиотек пользователя
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Приложение 1. Кодировочная таблица пэвм.
- •Приложение 2. Константы графического режима.
Использование буфера экрана.
Любая информация, выводимая на экран отображается в видеопамяти дисплея. Вся доступная дисплейная память адаптеров CGA,EGA,VGA делится на отдельные образы экрана, называемыми страницами . Каждая страница определяется порядковым номером и задается абсолютным адресом хранения. В реальной работе используется только нулевая страница, адрес которой $B800:$0000.
Для повышения эффективности программ, в частности при разработке различных меню сложной структуры, необходимо обеспечивать быструю сменяемость экранов и восстановление экрана с нужным меню в данный момент работы с программой. В этом случае удобно использовать буфер экрана, с дальнейшим сохранением его копии в динамической памяти и восстановление в любой момент на экране дисплея. Использование динамической памяти позволяет хранить несколько поколений экранов для работы.
Пример.
{-------------------------------}
{ пример сохранения копии экрана}
{ в динамической памяти }
{-------------------------------}
Program A;
uses Crt;
type Ekr=array[1..4000] of byte; { кол-во байтов для хранения }
var Ekran:Ekr Absolute $B800:0000; { одной копии экрана }
buf:^Ekr;
begin
Clrscr;
for n:=1 to 15 do
writeln(' Экран для сохранения ');
new(buf); { новая динамическая переменная }
buf^:=Ekran; { сохранение в ней копии экрана }
Clrscr;
writeln(' Восстановление экрана');
Delay(3000);
Ekran:=buf^; { восстановление зкраной копии }
dispose(buf);
readln
end.
Управление экраном в графическом режиме.
Экран ПЭВМ в графическом режиме представляется совокупностью светящихся точек - пикселей. Количество пикселей, выводимых на экран, определяется установленным графическим режимом.
Каждый пиксель определяется своими координатами, задающими его местоположение относительно верхнего левого угла экрана т.(0,0). Значение номера столбца увеличивается слева направо, значение номера строки сверху вниз.
Пользователь может управлять цветом любого пикселя, что дает возможность строить графики, чертежи, символы. Как и в текстовом режиме пользователь может определить для вывода изображений прямоугольную область на экране - графическое окно. Вся информация выводится по отношению к текущему окну до перехода в другое окно. При инициализации графического режима текущее окно - весь экран.
Стандартные подпрограммы для работы в графическом режиме
Для активизации графического режима работы экрана необходимо иметь библиотеку стандартных графических подпрограмм GRAPH.TPU и графический драйвер (программа, управляющая техническими средствами), например, CGA.BGI. Обычно данные модули находятся в каталоге ТР, содержащем все основные модули TURBO PASCAL, в противном случае необходимо указать путь к соответствующему драйверу, а в OPTIONS\DIRECTORIES меню Turbo Pascal задать путь к библиотеке GRAPH.TPU.
Модуль Graph дает возможность установки графических окон, построения и заполнения различными стилями геометрических фигур: точки, линии, окружности, эллипса, дуги, прямоугольника, диаграммы. Для вывода текста используются разнообразные шрифты, которые можно увеличивать, выравнивать, ориентировать горизонтально и вертикально на экране.
Все процедуры и функции модуля Graph, данные в пособии,по функциональному назначению можно разделить на группы:
Управление графическими режимами и их анализ
( DetectGraph, InitGraph, CloseGraph, GraphResult, GraphErrorsMsg, GraphDefaults, SetWriteMode, SetGraphMode, GetMaxMode, GetGraphMode, GetModeName, GetDriverNamen, ClearDevice, GetGraphName, GetModeRange).
Управление текущим указателем
( MoveTo, MoveRel, GetMaxX, GetMaxY, GetX, GetY).
Управление графическими окнами, страницами
( SetViewPort, ClearViewPort, GetViewSettings, SetActivPage, SetVisualPage).
Управление цветом и шаблоном заполнения изображений.
(SetColor, SetBKColor, SetPalette, SetAllPalette, SetLineStyle, SetFillStyle, SetFillPattern, FloodFill GetColor, GetMaxColor, GetBKColor, GetPalette, GetPaletteSize, GetDefaultPalette, GetLineSettings, GetFillSettings,GetFillPattern).
Изображение геометрических элементов
a) коэффициент сжатия изображений
( SetAspectRatio, GetAspectRatio ).
б) геометрические элементы
( Line, LineTo, LineRel, Arc, GetAspectCoords, Circle, Sector, Ellipse, FillEllipse, Rectangle, Bar, Bar3D, DrawPoly,
FillPoly).
Битовые операции
( PutPixel, GetPixel, ImageSize, GetImage, PutImage).
Вывод текста
(OutTextXY, OutText, SetTextStyle, SetTextJustify,
SetUserCharSize, TextHeight, TextWidth, InstallUserFont, RegisterBGIFont, GetTextSettings).
В данном разделе даны наиболее часто используемые в графическом режиме процедуры и функции.