Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемЛев Михайловский
1 Графические возможности Pascal
2 Любое изображение на экране монитора формируется из отдельных элементов – пикселов (от англ. Pixel - Picture Element – элемент изображения). Для получения того или иного изображения на экране монитора как в графическом, так и в текстовом режимах необходимо заставить светиться строго определенную группу пикселов. В текстовом режиме на экран могут выводиться только определенные символы, образы которых хранятся в постоянной или оперативной памяти компьютера, а управление отдельными пикселами невозможно. В графическом режиме появляется возможность управления отдельными пикселами, что позволяет формировать любые изображения.
3 С технической точки зрения управлением монитора занимается специальное устройство компьютера – видеоадаптер. видеоадаптер – это весьма сложное электронное устройство, управляемое собственным микропроцессором. В самом общем виде видеоадаптер состоит из контроллера электронно-лучевой трубки (CRT-контроллера) и видеопамяти (видеобуфера).
4 Чтобы сделать процесс создания графических изображений более простым и эффективным фирма Borland International разработала специальную библиотеку GRAPH, а также набор графических драйверов, позволяющих работать с различными типами видеоадаптеров.GRAPH Графический драйвер – это вспомогательная программа-посредник, обеспечивающая взаимодействие пользовательских программ с конкретным графическим устройством. Графические драйверы хранятся в файлах с расширением.BGI (Borland Graphic Interface). Обычно эти файлы расположены в каталоге \BP\BGI (или \TP\BGI).
5 Инициализация графического режима Любая программа, использующая графику должна прежде всего подключить модуль Graph. Это выполняется директивой USES: USES Graph; Прежде чем работать с графикой необходимо установить определенный графический видеорежим. Выбор видеорежима зависит от имеющегося графического адаптера. Большинство современных компьютеров (IBM- совместимых) имеют в своем составе видеоадаптер стандарта VGA (Video Graphic Array) или SuperVGA. Для работы с таким адаптером используется графический драйвер EGAVGA.BGI.
6 При этом имеется возможность работы в трех различных видеорежимах: РежимРазрешение VGALo = 0640х200 VGAMed = 1640х350 VGAHi = 2640х480 Во всех трех видеорежимах возможно одновременное отображение до 16 различных цветов.
7 процедуры инициализации графики – InitGraph InitGraph( var GraphDriver, GraphMode : Integer; DriverPath : String ); В модуле Graph для задания типа видеоадаптера определен ряд констант: Detect = 0 – автоопределение; CGA = 1 – адаптер CGA; EGA = 3 – адаптер EGA; VGA = 9 – адаптер VGA;
8 Pascal USES Graph; VAR GrDr, GrMd : integer; BEGIN GrDr := detect; InitGraph( GrDr, GrMd, c:\bp\bgi ); { теперь можно вызывать графические процедуры } CloseGraph; END.
9 Система координат
10 Чтобы узнать максимальные координаты экрана в текущем режиме работы, воспользуемся стандартными функциями GetMaxX и GetMaxY. Для этого наберите небольшую программу: Uses Graph; Var GraphDriver, GraphMode: integer; Begin GraphDriver:=detect; InitGraph(GraphDriver, GraphMode, ); Writeln(GetMaxX, 'x', GetMaxY); Readln; CloseGraph; End.
11 Чтобы точно строить изображение на экране, Вам нужно сначала нарисовать, как это должно выглядеть на бумаге. Для этого начертите в тетради систему координат графического режима.
12 Чтобы переместить курсор в нужное место используют следующие процедуры: 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).
13 Задание Наберите в теле программы следующие процедуры PutPixel(300, 150, Red), PutPixel(45, 420, 9) и просмотрите их действие.
14 Графика
15 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).
16 Цвет Код Цвет Код 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
17 (100; 400) (400; 200) (100; 200) (400; 400) (250; 100) (50; 200) (450; 200)
18 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.
19 Придумайте самостоятельно примеры с использованием всех процедур вычерчивания линий.
20 SetColor (Color), где переменная Color типа Word - устанавливает текущий цвет для выводимых линий и символов. Для установка цвета фона графического экрана имеется процедура: SetBkColor( Color )
21 Цвет Код Цвет Код 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
22 (100; 400) (400; 200) (100; 200) (400; 400) (250; 100) (50; 200) (450; 200)
23 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.
24 Задания: Исправьте свою программу так, чтобы процедуры рисовали линии различных цветов. В начерченной ранее системе координат изобразите на чертеже точки: А(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. Какая фигура у Вас получилась? Напишите программу, рисующую эту фигуру, по вашему рисунку.
25 Графика
26 Построение прямоугольников Для построения прямоугольных фигур имеется несколько процедур. Первая из них – процедура вычерчивания одномерного прямоугольника: Rectangle( X1, Y1, X2, Y2 ), где X1, Y1 – координаты верхнего левого угла, X2, Y2 – координаты правого нижнего угла прямоугольника.
27 (100; 400) (400; 200) (100; 200) (400; 400) (250; 100) (50; 200) (450; 200)
28 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.
29 закрашенные прямоугольники Bar( X1, Y1, X2, Y2 ), где параметры X1, Y2, X2 и Y2 имеют то же смысл, что и в процедуре Rectangle. Цвет и стиль закраски устанавливается процедурой SetFillStyle( Pattern, Color ), где параметр Pattern определяет стиль (шаблон) заливки, а параметр Color – ее цвет. Возможные значения параметра Pattern приведены в таблице
30 (100; 400) (400; 200) (100; 200) (400; 400) (250; 100) (50; 200) (450; 200)
31 Описание стиляКонстантаОписание стиляКонстанта Заполнение цветом фона (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
32 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.
33 Для построения объемных закрашенных прямоугольников используется процедура: 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 );
34 Процедура вычерчивания окружностей текущим цветом имеет вид: Circle( X, Y, Radius ), где X, Y – координаты центра окружности, а Radius – ее радиус. Например, следующий фрагмент выводит ярко-зеленую окружность c радиусом 50 пикселов и центром в точке 450, 100: SetColor( LightGreen ); Circle( 450, 100, 50 );
35 вычерчивание дуг Arc( X, Y, StartAngle, EndAngle, Radius ), где X, Y – координаты центра дуги, StartAngle и EndAngle – начальный и конечный угол (в градусах), Radius – радиус. Очевидно, что если StartAngle = 0, а EndAngle = 359, то вычерчивается полная окружность.
36 Заполнение замкнутых областей FloodFill( X, Y, Border ), где X, Y – координаты точки внутри или вне фигуры, Border – цвет контура фигуры. Если точка (X, Y) находится внутри замкнутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть. Пример: Красная окружность заполненная зеленой штриховкой SetColor( Red ); Circle( 450, 100, 50 ); SetFillStyle( SlashFill, Green ); FloodFill( 450, 100, Red );
37 Установка стиля линии SetLineStyle( Style, Pattern, Thickness ), где Style – параметр, определяющий стиль линии. Возможные значения этого параметра приведены в таблице; Pattern – образец; Thickness – толщина линии. Если применяется один из стандартных стилей, значение параметра Pattern должно быть равно 0.
39 Описание стиляКонстанта Сплошная линияSolidLn = 0 Точечная линияDottedLn = 1 Штрих-пунктирная линияCenterLn = 2 Пунктирная линияDashedLn = 3 Стиль, определяемый пользователем UserBitLn = 4 NormWidth = 1 – линия толщиной в один пиксел ThickWidth = 3 – линия толщиной в три пиксела
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.