39
Графические возможности Pascal

Графические возможности

  • Upload
    lecea

  • View
    76

  • Download
    2

Embed Size (px)

DESCRIPTION

Графические возможности. Pascal. Любое изображение на экране монитора формируется из отдельных элементов – пикселов (от англ. Pixel - Picture Element – элемент изображения). - PowerPoint PPT Presentation

Citation preview

Page 1: Графические возможности

Графические возможности

Pascal

Page 2: Графические возможности

• Любое изображение на экране монитора формируется из отдельных элементов – пикселов (от англ. Pixel - Picture Element – элемент изображения).

• Для получения того или иного изображения на экране монитора как в графическом, так и в текстовом режимах необходимо заставить светиться строго определенную группу пикселов.

• В текстовом режиме на экран могут выводиться только определенные символы, образы которых хранятся в постоянной или оперативной памяти компьютера, а управление отдельными пикселами невозможно.

• В графическом режиме появляется возможность управления отдельными пикселами, что позволяет формировать любые изображения.

Page 3: Графические возможности

• С технической точки зрения управлением монитора занимается специальное устройство компьютера – видеоадаптер.

• видеоадаптер – это весьма сложное электронное устройство, управляемое собственным микропроцессором.

• В самом общем виде видеоадаптер состоит из контроллера электронно-лучевой трубки (CRT-контроллера) и видеопамяти (видеобуфера).

Page 4: Графические возможности

• Чтобы сделать процесс создания графических изображений более простым и эффективным фирма Borland International разработала специальную библиотеку GRAPH, а также набор графических драйверов, позволяющих работать с различными типами видеоадаптеров.

• Графический драйвер – это вспомогательная программа-посредник, обеспечивающая взаимодействие пользовательских программ с конкретным графическим устройством.

• Графические драйверы хранятся в файлах с расширением .BGI (Borland Graphic Interface). Обычно эти файлы расположены в каталоге \BP\BGI (или \TP\BGI).

Page 5: Графические возможности

Инициализация графического режима

• Любая программа, использующая графику должна прежде всего подключить модуль Graph. Это выполняется директивой USES:

• USES Graph;• Прежде чем работать с графикой необходимо установить

определенный графический видеорежим. Выбор видеорежима зависит от имеющегося графического адаптера.

• Большинство современных компьютеров (IBM-совместимых) имеют в своем составе видеоадаптер стандарта VGA (Video Graphic Array) или SuperVGA. Для работы с таким адаптером используется графический драйвер EGAVGA.BGI.

Page 6: Графические возможности

При этом имеется возможность работы в трех различных видеорежимах:

Режим РазрешениеVGALo = 0 640х200

VGAMed = 1 640х350VGAHi = 2 640х480

Во всех трех видеорежимах возможно одновременное отображение до 16 различных цветов.

Page 7: Графические возможности

процедуры инициализации графики – InitGraph

• InitGraph( var GraphDriver, GraphMode : Integer; DriverPath : String );

• В модуле Graph для задания типа видеоадаптера определен ряд констант:

• Detect = 0 – автоопределение;CGA = 1 – адаптер CGA;EGA = 3 – адаптер EGA;VGA = 9 – адаптер VGA;

Page 8: Графические возможности

Pascal• USES Graph;

VAR GrDr, GrMd : integer;BEGIN GrDr := detect; InitGraph( GrDr, GrMd, ‘c:\bp\bgi’ ); { теперь можно вызывать графические процедуры } . . . . . . . . . CloseGraph;END.

Page 9: Графические возможности

Система координат

Page 10: Графические возможности

• Чтобы узнать максимальные координаты экрана в текущем режиме работы, воспользуемся стандартными функциями GetMaxX и GetMaxY. Для этого наберите небольшую программу:

• Uses Graph;Var GraphDriver, GraphMode: integer;Begin GraphDriver:=detect; InitGraph(GraphDriver, GraphMode, ‘’); Writeln(GetMaxX, 'x', GetMaxY); Readln; CloseGraph;End.

Page 11: Графические возможности

• Чтобы точно строить изображение на экране, Вам нужно сначала нарисовать, как это должно выглядеть на бумаге. Для этого начертите в тетради систему координат графического режима.

Page 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).

Page 13: Графические возможности

Задание

• Наберите в теле программы следующие процедуры PutPixel(300, 150, Red), PutPixel(45, 420, 9) и просмотрите их действие.

Page 14: Графические возможности

Графика

21.04.23

Page 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).

Page 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

Page 17: Графические возможности

(100; 400)

(400; 200)(100; 200)

(400; 400)

(250; 100)

(50; 200) (450; 200)

Page 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.

Page 19: Графические возможности

• Придумайте самостоятельно примеры с использованием всех процедур вычерчивания линий.

Page 20: Графические возможности

• SetColor (Color), где переменная Color типа Word - устанавливает текущий цвет для выводимых линий и символов.

• Для установка цвета фона графического экрана имеется процедура:

• SetBkColor( Color )

Page 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

Page 22: Графические возможности

(100; 400)

(400; 200)(100; 200)

(400; 400)

(250; 100)

(50; 200) (450; 200)

Page 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.

Page 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. Какая фигура у Вас получилась? • Напишите программу, рисующую эту фигуру, по

вашему рисунку.

Page 25: Графические возможности

Графика

21.04.23

Page 26: Графические возможности

Построение прямоугольниковДля построения прямоугольных фигур

имеется несколько процедур. Первая из них – процедура вычерчивания одномерного прямоугольника:

• Rectangle( X1, Y1, X2, Y2 ),• где X1, Y1 – координаты верхнего левого

угла, X2, Y2 – координаты правого нижнего угла прямоугольника.

Page 27: Графические возможности

(100; 400)

(400; 200)(100; 200)

(400; 400)

(250; 100)

(50; 200) (450; 200)

Page 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.

Page 29: Графические возможности

закрашенные прямоугольники • Bar( X1, Y1, X2, Y2 ),• где параметры X1, Y2, X2 и Y2 имеют то же смысл,

что и в процедуре Rectangle. • Цвет и стиль закраски устанавливается

процедурой• SetFillStyle( Pattern, Color ),• где параметр Pattern определяет стиль (шаблон)

заливки, а параметр Color – ее цвет. Возможные значения параметра Pattern приведены в таблице

Page 30: Графические возможности

(100; 400)

(400; 200)(100; 200)

(400; 400)

(250; 100)

(50; 200) (450; 200)

Page 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

Page 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.

Page 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 );

Page 34: Графические возможности

Процедура вычерчивания окружностей текущим цветом имеет вид:

• Circle( X, Y, Radius ),• где X, Y – координаты центра окружности, а

Radius – ее радиус. Например, следующий фрагмент выводит ярко-зеленую окружность c радиусом 50 пикселов и центром в точке 450, 100:

• SetColor( LightGreen );Circle( 450, 100, 50 );

Page 35: Графические возможности

вычерчивание дуг

• Arc( X, Y, StartAngle, EndAngle, Radius ),• где X, Y – координаты центра дуги,

StartAngle и EndAngle – начальный и конечный угол (в градусах), Radius – радиус. Очевидно, что если StartAngle = 0, а EndAngle = 359, то вычерчивается полная окружность.

Page 36: Графические возможности

Заполнение замкнутых областей

• FloodFill( X, Y, Border ),• где X, Y – координаты точки внутри или вне фигуры, Border –

цвет контура фигуры. Если точка (X, Y) находится внутри замкнутой области, то заполняется внутренняя область. Если эта точка находится вне замкнутой области, то заполняется ее внешняя часть.

• Пример: Красная окружность заполненная зеленой штриховкой

• SetColor( Red ); Circle( 450, 100, 50 );SetFillStyle( SlashFill, Green ); FloodFill( 450, 100, Red );

Page 37: Графические возможности

Установка стиля линии

• SetLineStyle( Style, Pattern, Thickness ),• где Style – параметр, определяющий стиль

линии. Возможные значения этого параметра приведены в таблице; Pattern – образец; Thickness – толщина линии. Если применяется один из стандартных стилей, значение параметра Pattern должно быть равно 0.

Page 38: Графические возможности
Page 39: Графические возможности

Описание стиля Константа

Сплошная линия SolidLn = 0

Точечная линия DottedLn = 1

Штрих-пунктирная линия CenterLn = 2

Пунктирная линия DashedLn = 3

Стиль, определяемый пользователем UserBitLn = 4

NormWidth = 1 – линия толщиной в один пикселThickWidth = 3 – линия толщиной в три пиксела