Графические возможности
DESCRIPTION
Графические возможности. Pascal. Любое изображение на экране монитора формируется из отдельных элементов – пикселов (от англ. Pixel - Picture Element – элемент изображения). - PowerPoint PPT PresentationTRANSCRIPT
Графические возможности
Pascal
• Любое изображение на экране монитора формируется из отдельных элементов – пикселов (от англ. Pixel - Picture Element – элемент изображения).
• Для получения того или иного изображения на экране монитора как в графическом, так и в текстовом режимах необходимо заставить светиться строго определенную группу пикселов.
• В текстовом режиме на экран могут выводиться только определенные символы, образы которых хранятся в постоянной или оперативной памяти компьютера, а управление отдельными пикселами невозможно.
• В графическом режиме появляется возможность управления отдельными пикселами, что позволяет формировать любые изображения.
• С технической точки зрения управлением монитора занимается специальное устройство компьютера – видеоадаптер.
• видеоадаптер – это весьма сложное электронное устройство, управляемое собственным микропроцессором.
• В самом общем виде видеоадаптер состоит из контроллера электронно-лучевой трубки (CRT-контроллера) и видеопамяти (видеобуфера).
• Чтобы сделать процесс создания графических изображений более простым и эффективным фирма Borland International разработала специальную библиотеку GRAPH, а также набор графических драйверов, позволяющих работать с различными типами видеоадаптеров.
• Графический драйвер – это вспомогательная программа-посредник, обеспечивающая взаимодействие пользовательских программ с конкретным графическим устройством.
• Графические драйверы хранятся в файлах с расширением .BGI (Borland Graphic Interface). Обычно эти файлы расположены в каталоге \BP\BGI (или \TP\BGI).
Инициализация графического режима
• Любая программа, использующая графику должна прежде всего подключить модуль Graph. Это выполняется директивой USES:
• USES Graph;• Прежде чем работать с графикой необходимо установить
определенный графический видеорежим. Выбор видеорежима зависит от имеющегося графического адаптера.
• Большинство современных компьютеров (IBM-совместимых) имеют в своем составе видеоадаптер стандарта VGA (Video Graphic Array) или SuperVGA. Для работы с таким адаптером используется графический драйвер EGAVGA.BGI.
При этом имеется возможность работы в трех различных видеорежимах:
Режим РазрешениеVGALo = 0 640х200
VGAMed = 1 640х350VGAHi = 2 640х480
Во всех трех видеорежимах возможно одновременное отображение до 16 различных цветов.
процедуры инициализации графики – InitGraph
• InitGraph( var GraphDriver, GraphMode : Integer; DriverPath : String );
• В модуле Graph для задания типа видеоадаптера определен ряд констант:
• Detect = 0 – автоопределение;CGA = 1 – адаптер CGA;EGA = 3 – адаптер EGA;VGA = 9 – адаптер VGA;
Pascal• USES Graph;
VAR GrDr, GrMd : integer;BEGIN GrDr := detect; InitGraph( GrDr, GrMd, ‘c:\bp\bgi’ ); { теперь можно вызывать графические процедуры } . . . . . . . . . CloseGraph;END.
Система координат
• Чтобы узнать максимальные координаты экрана в текущем режиме работы, воспользуемся стандартными функциями GetMaxX и GetMaxY. Для этого наберите небольшую программу:
• Uses Graph;Var GraphDriver, GraphMode: integer;Begin GraphDriver:=detect; InitGraph(GraphDriver, GraphMode, ‘’); Writeln(GetMaxX, 'x', GetMaxY); Readln; CloseGraph;End.
• Чтобы точно строить изображение на экране, Вам нужно сначала нарисовать, как это должно выглядеть на бумаге. Для этого начертите в тетради систему координат графического режима.
• Чтобы переместить курсор в нужное место используют следующие процедуры:
• MoveTo (X, Y), где переменные X, Y типа Integer - перемещает текущий указатель в точку с координатами (X,Y).
• Например, MoveTo (200, 100)• MoveRel (dX, dY), где переменные dX, dY типа Integer -
перемещает текущий указатель по горизонтали на расстояние, равное dX пикселям, а по вертикали на расстояние, равное dY пикселям. (Relation (англ.) - относительно)
• Например, если после выполнения предыдущей процедуры текущий указатель находится в точке (200, 100), то после выполнения процедуры MoveRel (25, 150) он будет находится в точке с координатами (225, 250).
• PutPixel(X, Y, Color), где переменные X, Y типа Integer, а Color типа Word - процедура выводит точку заданного цвета Color в точку с координатами (X, Y).
Задание
• Наберите в теле программы следующие процедуры PutPixel(300, 150, Red), PutPixel(45, 420, 9) и просмотрите их действие.
Графика
21.04.23
• Line (X1, Y1, X2, Y2), где переменные X1, Y1, X2, Y2 типа Integer - рисуется линия от точки (X1, Y1) до точки (X2, Y2).
• LineTo (X, Y), где переменные X, Y типа Integer - рисуется линия из точки, где находится в данный момент курсор в точку (X, Y).
• LineRel (dX,dY), где переменные dX, dY типа Integer - рисуется линия из точки, где находится в данный момент курсор (X, Y) в точку (X+dX,Y+dY).
Цвет Цвет Код Цвет Цвет Код
Black черный 0 DarkGray темно-серый
8
Blue синий 1 LightBlue ярко-
голубой 9
Green зеленый 2 LightGreen ярко-
зеленый 10
Cyan бирюзовый 3 LightCyan ярко-
бирюзовый 11
Red красный 4 LightRed ярко-
красный 12
Magenta малиновый 5 LightMagen
ta ярко-
малиновый 13
Brown коричневы
й 6 Yellow желтый 14
LightGray светло-серый
7 White белый 15
(100; 400)
(400; 200)(100; 200)
(400; 400)
(250; 100)
(50; 200) (450; 200)
• USES Graph;VAR GrDr, GrMd : integer;BEGIN GrDr := detect; InitGraph( GrDr, GrMd, ‘’ ); line(100,200,400,200); line(100,200,100,400); line(400,400,100,400); line(400,400,400,200);
line(50,200,250,100); line(50,200,450,200); line(250,100,450,200);
CloseGraph;END.
• Придумайте самостоятельно примеры с использованием всех процедур вычерчивания линий.
• SetColor (Color), где переменная Color типа Word - устанавливает текущий цвет для выводимых линий и символов.
• Для установка цвета фона графического экрана имеется процедура:
• SetBkColor( Color )
Цвет Цвет Код Цвет Цвет Код
Black черный 0 DarkGray темно-серый
8
Blue синий 1 LightBlue ярко-
голубой 9
Green зеленый 2 LightGreen ярко-
зеленый 10
Cyan бирюзовый 3 LightCyan ярко-
бирюзовый 11
Red красный 4 LightRed ярко-
красный 12
Magenta малиновый 5 LightMagen
ta ярко-
малиновый 13
Brown коричневы
й 6 Yellow желтый 14
LightGray светло-серый
7 White белый 15
(100; 400)
(400; 200)(100; 200)
(400; 400)
(250; 100)
(50; 200) (450; 200)
• USES Graph;VAR GrDr, GrMd : integer;BEGIN GrDr := detect; InitGraph( GrDr, GrMd, ‘’ ); setcolor(red);
• line(100,200,400,200); line(100,200,100,400); line(400,400,100,400); line(400,400,400,200);
• Setcolor(blue) line(50,200,250,100); line(50,200,450,200); line(250,100,450,200);
CloseGraph;END.
Задания:• Исправьте свою программу так, чтобы процедуры
рисовали линии различных цветов. • В начерченной ранее системе координат изобразите
на чертеже точки: А(150,450), В(100,350), С(350,350), D(300,450), E(200,350), F(200,50), L(250,40), K(200,20), M(300,250), X(175,400), Y(225,400), Z(275,400).
• Соедините точки, получая отрезки: AB, BC, CD, AD, EK,
KL, LF, FM, ME. Какая фигура у Вас получилась? • Напишите программу, рисующую эту фигуру, по
вашему рисунку.
Графика
21.04.23
Построение прямоугольниковДля построения прямоугольных фигур
имеется несколько процедур. Первая из них – процедура вычерчивания одномерного прямоугольника:
• Rectangle( X1, Y1, X2, Y2 ),• где X1, Y1 – координаты верхнего левого
угла, X2, Y2 – координаты правого нижнего угла прямоугольника.
(100; 400)
(400; 200)(100; 200)
(400; 400)
(250; 100)
(50; 200) (450; 200)
• USES Graph;VAR GrDr, GrMd : integer;BEGIN GrDr := detect; InitGraph( GrDr, GrMd, ‘’ ); setcolor(red);
• line(100,200,400,200); line(100,200,100,400); line(400,400,100,400); line(400,400,400,200);
• Setcolor(blue) line(50,200,250,100); line(50,200,450,200); line(250,100,450,200);
CloseGraph;END.
• USES Graph;VAR GrDr, GrMd : integer;BEGIN GrDr := detect; InitGraph( GrDr, GrMd, ‘’ ); setcolor(red);
• rectangle(100,200,400,400);
• Setcolor(blue) line(50,200,250,100); line(50,200,450,200); line(250,100,450,200);
CloseGraph;END.
закрашенные прямоугольники • Bar( X1, Y1, X2, Y2 ),• где параметры X1, Y2, X2 и Y2 имеют то же смысл,
что и в процедуре Rectangle. • Цвет и стиль закраски устанавливается
процедурой• SetFillStyle( Pattern, Color ),• где параметр Pattern определяет стиль (шаблон)
заливки, а параметр Color – ее цвет. Возможные значения параметра Pattern приведены в таблице
(100; 400)
(400; 200)(100; 200)
(400; 400)
(250; 100)
(50; 200) (450; 200)
Описание стиля Константа Описание стиля Константа
Заполнение цветом фона (SetBkColor)
EmtyFill = 0Вертикально-горизонтальная штриховка
HatchFill = 7
Заполнение текущим цветом (SetColor)
SolidFill = 1Разреженная штриховкакрест-накрест
XhatchFill = 8
Заполнение символами - -
LineFill = 2Частая штриховкакрест-накрест
InterLeaveFill = 9
Заполнение символами // нормальной толщины
LtslashFill = 3Заполнение разреженными точками
WideDotFill = 10
Заполнение символами // удвоенной толщины
SlashFill = 4Заполнение частыми точками
CloseDotFill = 11
Заполнение символами \\ нормальной толщины
BkSlashFill = 5Пользовательскийстиль
UserFill = 12
Заполнение символами \\ удвоенной толщины
LtBkSlashFill = 6
• USES Graph;VAR GrDr, GrMd : integer;BEGIN GrDr := detect; InitGraph( GrDr, GrMd, ‘’ ); SetFillStyle (LtslashFill,blue);
bar(100,200,400,400); Setcolor(blue)
line(50,200,250,100); line(50,200,450,200); line(250,100,450,200);
CloseGraph;END.
Для построения “объемных” закрашенных прямоугольников используется процедура:
•Bar3D( X1, Y1, X2, Y2, Depth, Top ).Тип и цвет заливки устанавливается процедурой SetFillStyle.
Параметр Depth определяет глубину трехмерного контура. Чаще всего его значение равно четверти ширины прямоугольника:
•Depth := (X2-X1) div 4;Параметр Top определяет, строить над прямоугольником
вершину (True) или нет (False). Например:•SetFillStyle( XhatchFill, Red );
Bar3D( 10, 10, 50, 100, 10, True );
Процедура вычерчивания окружностей текущим цветом имеет вид:
• Circle( X, Y, Radius ),• где X, Y – координаты центра окружности, а
Radius – ее радиус. Например, следующий фрагмент выводит ярко-зеленую окружность c радиусом 50 пикселов и центром в точке 450, 100:
• SetColor( LightGreen );Circle( 450, 100, 50 );
вычерчивание дуг
• Arc( X, Y, StartAngle, EndAngle, Radius ),• где X, Y – координаты центра дуги,
StartAngle и EndAngle – начальный и конечный угол (в градусах), Radius – радиус. Очевидно, что если StartAngle = 0, а EndAngle = 359, то вычерчивается полная окружность.
Заполнение замкнутых областей
• FloodFill( X, Y, Border ),• где X, Y – координаты точки внутри или вне фигуры, Border –
цвет контура фигуры. Если точка (X, Y) находится внутри замкнутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть.
• Пример: Красная окружность заполненная зеленой штриховкой
• SetColor( Red ); Circle( 450, 100, 50 );SetFillStyle( SlashFill, Green ); FloodFill( 450, 100, Red );
Установка стиля линии
• SetLineStyle( Style, Pattern, Thickness ),• где Style – параметр, определяющий стиль
линии. Возможные значения этого параметра приведены в таблице; Pattern – образец; Thickness – толщина линии. Если применяется один из стандартных стилей, значение параметра Pattern должно быть равно 0.
Описание стиля Константа
Сплошная линия SolidLn = 0
Точечная линия DottedLn = 1
Штрих-пунктирная линия CenterLn = 2
Пунктирная линия DashedLn = 3
Стиль, определяемый пользователем UserBitLn = 4
NormWidth = 1 – линия толщиной в один пикселThickWidth = 3 – линия толщиной в три пиксела