ГРАФИЧЕСКИЙ ВИДЕОРЕЖИМ Экран компьютера представляет собой большую
ГРАФИЧЕСКИЙ ВИДЕОРЕЖИМ Экран компьютера представляет собой большую прямоугольную таблицу, элементами которой являются мельчайшие точки экрана (пиксели). В графическом режиме можно управлять цветом отдельных пикселей экрана. Из цветных точек составляются линии, фигуры и целые графические объекты. Таким образом на экране дисплея может быть создано любое графическое изображение.
На рисунке вы видите сильно увеличенную картинку, на самом же деле элементарные точки , из которых состоит изображение, или пиксели, должны быть очень маленькими, чтобы глаз воспринимал картинку как единое целое. Пиксель ( Pixel ) – сокращение от Picture Element (элемент рисунка). Важное понятие в машинной графике – графический примитив – совокупность пикселей, определяющая некоторую геометрическую фигуру. Наиболее распространенные примитивы – это точка, линия, прямоугольник, закрашенный прямоугольник, окружность и эллипс.
Координаты пикселей на экране Каждый пиксель на графическом экране имеет координаты (X, Y), которые образуются номерами столбцов (X) и строк (Y). Нумерация начинается в верхнем левом углу. Именно в этом углу расположен пиксель с координатами (0, 0). Координата X растет вправо, координата Y — вниз.
Адаптеры графического режима Число пикселей на экране зависит от типа специального устройства — графического адаптера. В частности, для адаптеров: CGA — 640*200 (столбцов * строк), EGA — 640 * 350, VGA — 640*480, SVGA — 1024*768.
Этапы работы программы с графическим видеорежимом 1. Подключение модуля Graph 2. Инициализация графического режима 3. Графические действия 4. Закрыть графический режим
Подключение модуля Graph Program graphika; Uses Graph; Var Begin … End.
Инициализация графического видеорежима Инициализация графического режима выполняется процедурой Init. Graph( <драйвер> : integer, <режим> : integer, <путь к файлу>: string); 1) Для инициализации графического режима достаточно присвоить переменной, отвечающей за драйвер, константу Detect или 0. 2) Присваивать какое-либо значение переменной режима в этом случае не требуется. 3) Третий параметр указывает путь к файлу содержащему драйвер графического режима с расширением *. bgi. Например: Svga 256. bgi, Egavga. bgi если этот файл находится в текущем каталоге, то путь может быть пустым (").
Работа с графическим видеорежимом Uses Graph; VAR Driver. Var, Mode. Var: integer; BEGIN {инициализация графического режима} Driver. Var: =Detect; Mode. Var: =1; Init. Graph(Driver. Var, Mode. Var, ’d: bpbgi'); {Init. Graph(Detect , 1, ’d: bpbin'); } {рисование графических примитивов} {закрыть графический режим} End.
Выход из графического видеорежима Для выхода из графического режима используется стандартная процедура без параметров Close. Graph. Она восстанавливает режим, существовавший до инициализации графики.
Работа с графическим видеорежимом Uses Graph; VAR Driver. Var, Mode. Var: integer; BEGIN {инициализация графического режима} Driver. Var: =Detect; Mode. Var: =1; Init. Graph(Driver. Var, Mode. Var, ’d: bpbgi'); {рисование графических примитивов} {закрыть графический режим} Close. Graph; End.
Максимальные координаты пикселей на экране Приступая к работе с графикой, следует знать максимальные координаты видимого экрана. Система программирования не реагирует на попытку построения графических образов за пределами видимого экрана, как на ошибку. Поэтому формально можно строить фигуры из пикселей, которые находятся как бы за пределами экрана, но они отображаться не будут. Чтобы определить максимальные координаты используются функции Get. Max. X и Get. Max. Y
Управление курсором • Для определения текущих координат графического курсора используют функции: – Get. X: integer – Get. Y: integer. • Для перемещения графического курсора используют процедуры: – Move. To(X, Y: integer); перемещает текущий указатель в точку с координатами X, Y. – Move. Rel(d. X, d. Y: integer); перемещает текущий курсор в точку, которая находится на расстоянии (d. X. d. Y) от текущей позиции. При задании положительных значений d. X или d. Y значения соответствующих координат увеличиваются, при задании отрицательных – уменьшаются.
РАБОЧИЙ ЦВЕТ Цвет, который имеют графические объекты при выводе на экран, называется рабочим цветом. По умолчанию в графическом режиме рабочим является белый цвет, который хорошо контрастирует с черным цветом фона. В любом месте программы рабочий цвет можно изменить. Рабочий цвет устанавливается стандартной процедурой Set. Color( Color: word); здесь Color — код цвета (0. . 16). Аргумент Color может быть целым числом, целой величиной или арифметическим выражением с целыми значениями. Например: установить красный рабочий цвет — Set. Color(4) или Set. Color(N+2), где N — целая величина со значением 2.
ОПИСАНИЕ ЦВЕТОВ
БАЗОВЫЙ НАБОР ГРАФИЧЕСКИХ ПРОЦЕДУР И ФУНКЦИЙ Цвет фона — устанавливается процедурой Set. Bk. Color(Color: word); Очистка графического экрана На любом этапе в программе можно использовать процедуру очистки графического экрана: Clear. Device; - графический экран закрашивается в установленный цвет фона.
Отображение точки Процедура Put. Pixel(X, Y: integer; Color: word); отображает точку на экране, где X и Y — экранные координаты точки, Color — ее цвет.
Процедуры отображения отрезков прямых линий Line(X 1, Y 1, X 2, Y 2: integer); - выводит на экран отрезок прямой линии. (X 1, Y 1) — координаты начальной точки, (X 2, Y 2) — координаты конечной точки отрезка. Line. To(X, Y); — проводит отрезок из текущей точки до точки с координатами (X, Y); Line. Rel(d. X, d. Y); — проводит отрезок из текущей точки до точки, удаленной от нее на расстояние (d. X, d. Y).
Установка стиля линий Линии можно вычерчивать самых различных стилей: тонкие, широкие, штриховые, пунктирные и т. д. Процедура Set. Line. Style(
Построение прямоугольников Rectangle(Xl, Yl, X 2, Y 2: integer); строит изображение прямоугольника на плоскости. Здесь X 1, Y 1 — координаты левого верхнего угла, X 2, Y 2 — координаты правого нижнего угла прямоугольника. При этом используется текущий цвет (Set. Color) и стиль линии (Set. Line. Style). Область внутри прямоугольника не закрашена и совпадает по цвету с фоном. Bar(X 1, Y 1, X 2, Y 2: integer); позволяет строить прямоугольник, внутренняя область которого залита по текущему шаблону. Рассмотрим, как производить «заливку» замкнутых областей экрана с помощью различных узоров, т. е. как выбрать узор (шаблон) и цвет заполнения фигуры. Комбинацию узор-цвет принято называть стилем заполнения.
Стиль заливки Set. Fill. Style( <шаблон> : word; <цвет> : word); устанавливает шаблон и цвет заполнения замкнутой фигуры. Шаблоны приведены в таблице.
Заливка замкнутых областей Flood. Fill(X, Y: integer; Border: word); заполняет ограниченную область текущим цветом и стилем заполнения (Set. Fill. Style). Border - цвет границы закрашиваемой области. Если точка (X, Y) находится внутри области, то эта область закрашивается, если же она расположена вне области, то заполняется внешняя часть области.
Построение дуг Процедура Arc (X, Y: integer; a 1, а 2, R : word); Здесь (X, Y)—центр окружности дуги, a 1, a 2 — начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, R — радиус. Если a 1=0°, а а 2 = 360°, то вычерчивается полная окружность.
Построение эллипсов Процедура Ellipse(X, Y: integer; a 1, a 2, Rx, Ry: word); предназначена для построения эллиптических дуг. Здесь (X, Y) — центр эллипса, a 1, a 2 — начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, Rx и Ry — горизонтальная и вертикальная полуоси. Если al=0°, а a, 2 = 360°, то вычерчивается полный эллипс.
Построение эллипсов Процедура Fill. Ellipse(X, Y: integer; Rx. Ry: word); строит полный закрашенный эллипс.
Построение окружностей Процедура Circle(X, Y: integer; R: word); выводит на экран изображение окружности с центром (X, Y) и радиусом R. Окружность рисуется цветом, заданным Set. Color.
Построение сектора Процедура Pie. Slice (X, Y: integer; al, a 2, R: word); выводит на экран изображение закрашенного сектора круга, используя в качестве центра круга точку (X, Y), начальный угол a 1, конечный угол а 2 и радиус R. Контур сектора высвечивается текущим цветом. При заполнении сектора используются шаблон и цвет, установленные процедурой Set. Fill. Style. Если a 1=0°, а a 2 = 360°, то на экран выводится закрашенная окружность.
Построение сектора Процедура Sector(X, Y: integer; a 1, a 2, Rx; Ry: word) строит закрашенный сектор эллипса.
Вывод текстовой информации в графическом видеорежиме • В графическом видеорежиме вывод текстовой информации выполняется с помощью штриховых (векторных) и побитовых (растровых, матричных) шрифтов. • В штриховых шрифтах при построении символа используется векторный способ (символ определяется серией отрезков). • Побитовый или растровый шрифт определен матрицей 8 X 8 пикселей для каждого символа. • Главное отличие штриховых шрифтов от растровых состоит в том, что при увеличении размеров символов растрового шрифта качество изображения ухудшается, а при увеличении размера символов штрихового шрифта — не ухудшается. • Каждый штриховой шрифт хранится в соответствующем файле с расширением. chr. • Необходимо, чтобы файлы *. chr находились в том же каталоге, что и файлы графических драйверов (*. bgi).
• Стандартный набор шрифтов может включать 9 шрифтов, однако не все из них подключают русский алфавит. • Константы некоторых типов шрифтов представлены в таблице. • По умолчанию принимается растровый шрифт Default. Font размера 1.
Процедура Set. Text. Style(Font: word; Direction: word; Char. Size: word); служит для установки шрифта. В ней Font задает шрифт, Direction — ориентацию и направление вывода символов, Char. Size — размер отображаемых символов.
Direction может принимать значение Horiz. Dir = 0 (направление слева направо) или Vert. Dir= 1 (направление снизу вверх ). Если указать Direction = 2, то каждый символ будет повернут на 90° против часовой стрелки (т. е. окажется «лежащим на боку» ), и вывод будет производиться в горизонтальном направлении, однако не все шрифты поддерживают этот режим. Параметр Char. Size (размер символов) может принимать целочисленные значения от 0 до 10, причем 0 соответствует размеру, стандартному для данного шрифта, а 10 является максимальным размером, но не для всех шрифтов.
Процедура Set. User. Char. Size(Mult. X, Div. X, Mult. Y, Div. Y: word); позволяет управлять размером символов. Здесь первые два параметра задают размер по горизонтали, два следующие — по вертикали. Если принять за 1 значение ширины символа стандартного шрифта, то отношением Mult. X/Div. X задается ширина символа шрифта, a Mult. Y/Div. Y — высота.
• Вывод текстовой информации на экран в графическом режиме выполняется процедурами Out. Text. XY. • Процедура Out. Text(Text. String: string); выводит на экран строку текста, начиная с текущего положения указателя. • Процедура Out. Text. XY(X, Y: integer; Text. String: string); выводит строку текста, начиная с точки, имеющей координаты (X, Y).
Построение простейших графических изображений Uses Graph; После выполнения этой программы на экране будет начерчена Var Driver, Mode: integer; линия сиреневого цвета Color: word; X, Y, x 1, y 1, i: word; Begin Driver: = Detect; Mode: =1; Init. Graph(Driver, Mode, 'd: bpbinbgi'); setlinestyle(1, 0, 2); setcolor(5); x 1: =10; y 1: =200; x: =250; y: =370; line(x 1, y 1, x, y); end; readln; Close. Graph; End.
Построение простейших графических изображений Приведем пример программы, при выполнении которой создается интересный визуальный эффект путем заполнения экрана множеством точек различных цветов.
Uses Graph, СRT; Var Driver, Mode: integer; Color: word; X, Y: word; Begin Driver: =Detect; Init. Graph(Driver. Var, Mode. Var, ’d: bpbgi'); Color: =0; Randomize; {выберем случайным образом координаты точки} Repeat X: =Random(Get. Max. X); Y: =Random(Get. Max. Y); Put. Pixel(X, Y, Color); {вывод точки} Inc(Color); {изменение цвета} {проверим, не превышает ли значение цвета максимального значения, которое определяет функция Get. Max. Color} If Color = Get. Max. Color Then Color: =0; Until Key. Pressed; {повторять до нажатия любой клавиши} Clear. Device; Close. Graph; End.
ГЕОМЕТРИЧЕСКИЕ ФИГУРЫ
Словесный алгоритм 1. Нарисовать объект 2. Пауза 3. Стереть 4. Изменить координаты 5. Перейти на шаг 1
Uses GRAPH, CRT; const t=20; d=5; Var x, gd, gm: integer; Begin gd: =Detect; Init. Graph(gd, gm, 'd: bpbgi'); x: =0; repeat setcolor(14); bar(x, 100, x+70, 130); circle(x+15, 140, 10); circle(x+55, 140, 10); delay(t); clearviewport; x: =x+d; until x>639; closegraph; End.
Графический режим 2012.ppt
- Количество слайдов: 39

