Построение простейших графических изображений

Отображение точки

Какие бы изображения не выводились на экран, все они построены из точек. Процедура PutPixel(X,Y:integer; Color:word); отображает точку на экране, где X и Y — экранные координаты точки. Color - её цвет.

Приведем пример программы, при выполнении которой создается интересный визуальный эффект путем заполнения экрана множеством точек различных цветов.

 

Пример.

 

Uses Crt, Graph;

Var Driver,Mode: integer; Color: word;

X,Y:word; Procedure GrInit;

Begin

Driver:= Detect; {автораспознанание драйвера} InitGraph(Driver,Mode,'');

If GraphResult<>0 then Begin

Writeln ('Ошибка инициализации!');

Writeln ('Работа программы прервана');

Halt (1) {остановить выполнение программы с кодом завершения — 1}

                   End

End;

Begin

GrInit;

Color: =0; Randomize; Repeat

{выберем случайным образом координаты точки}

X: = Random(GetMaxX);

Y: = Random(GetMaxY);

PutPixel(X,Y,Color), {вывод точки}

Inc(Color); {изменение цвета}

{проверим, не превышает ли значение цвета максимального значения, которое определяет функция GetMaxColor}

 

If Color = GetMaxColor Then Color: =0;

Until KeyPressed; {повторять до нажатия любой клавиши)

ClearDevice;

{CloseGraph}

End.

 

Отображение отрезков прямых линий

 

Процедура Line(Xl,Yl,X2,Y2: integer); выводит на экран отрезок прямой линии. Здесь (X1,Y1)—координаты начальной точки, a (X2,Y2) — координаты конечной точки отрезка.

Для построения отрезков можно применять также следующие процедуры:

LineTo(X,Y); — проводит отрезок из текущей точки до точки с координатами (X,Y);

LineRel(dX,dY|; — проводит отрезок из текущей точки до точки, удаленной от нее на расстояние (dX,dY). Линии можно вычерчивать самых различных стилей: тонкие, широкие, штриховые, пунктирные и т. д. Процедура SetLineStyle(<тип линии>:word;<yзop(maблон)>: word;(толщина линии):word); производит установку стиля. Константы типа линий и их толщины приведены в таблице.

 

Константа   Характеристика линий
SolidLn 0 Сплошная линия
DottedLn 1 Точечная линия
CenterLn 2 Штрихпунктирная линии
DashedLn 3 Пунктирная линия
UserBitLn 4 Тип линии, определяемый пользователем
NormWidth 1 Нормальная толщина линий
ThickWidth    3 Жирная линия

 

Если тип линии не равен UserBitLn, то параметр "узор(шаблон)" не используется и обычно задается равным нулю, например SetLineStyle(0,0,3) — стиль линии — сплошная, жирная.

 

 

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

 

Процедура Rectangle(Xl,Yl,X2,Y2: integer); строит изображение прямоугольника на плоскости. Здесь XI,Y1— координаты левого верхнего угла, X2,Y2 — координаты правого нижнего угла прямоугольника. При этом используется текущий цвет (SetColOf) и стиль линии (SetLineStyle). Область внутри прямоугольника не закрашена и совпадает по цвету с фоном.

Процедура Bar(Xl,Yl,X2,Y2:integer); позволяет строить более эффектные прямоугольники. Она рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Обычно используется в деловой графике для построения столбиковых диаграмм, а также для "закраски" графического окна, чтобы фон графического окна не сливался с общим фоном экрана.

Рассмотрим, как производить «заливку» замкнутых областей экрана с помощью различных узоров, т. е. как выбрать узор (шаблон) и цвет заполнения фигуры. Комбинацию узор-цвет принято называть стилем заполнения.

Процедура SetFillStyle(<шаблон>:word;<цвет>:word); устанавливает шаблон и цвет заполнения замкнутой фигуры.

Константы шаблонов закраски приведены в таблице.

 

Константа Значение Описание узора
EmptyFill 0 Закраска области фоновым цветом  
SolidFill 1 Сплошная закраска области текущим цветом
LineFill 2 Закраска линиями —
LtSlashFill 3 Закраска линиями ///  
SlashFill 4 Закраска жирными линиями///
BkSlashFill 5 Закраска жирными линиями\\\  
LtBkSlashFill   6 Закраска линиями ///  
HatchFill   7 Закраска редкой штриховкой  
XhalchFill 8 Закраска частой штриховкой (в обоих направлениях)
InterleaveFill   9 Закраска прерывистой линией  
WideDotFill   10 Закраска линией из редких точек  
CloseDotFill 11 Закраска линией из частых точек
UserFill 12 Закраска, определяемая программистом

 

Процедура FloodFill(X,Y:integer; Border: word); заполняет ограниченную область текущим цветом и стилем заполнения (SetFillStyle). Граница закрашиваемой области высвечивается цветом, заданным в Border.

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

 

 

Построение дуг, эллипсов и окружностей

 

Процедура Arc(X,Y:integer; al, a2,R: word); строит дугу. Здесь (X,Y)—центр окружности дуги, al, a2 — начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, R—радиус. Если al=0o, а а2=360°, то вычерчивается полная окружность.

Процедура Ellipse (X,Y: integer; al,a2,Rx,Ry: word); предназначена для построения эллиптических дуг. Здесь (X,Y)—центр эллипса, al,a2 — начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, Rx и Ry — горизонтальная и вертикальная полуоси. Если al=0°, а а2 = 36О, то вычерчивается ПОЛНЫЙ ЭЛЛИПС.

Процедура FillEllipse(X,Y: integer; Rx,Ry: word); строит полный закрашенный эллипс.

Процедура Circle(X,Y: integer; R: word); выводит на экран изображение окружности с центром (X,Y) и радиусом R. Окружность рисуется цветом, заданным SetColor.

Процедура PieSlice(X,Y: integer; al, n2,R: word); выводит на экран изображение закрашенного сектора круга, используя и качестве центра круга точку (X,Y), начальный угол al, конечный угол a2 и радиус R. Контур сектора высвечивается текущим цветом. При заполнении сектора используются шаблон и цвет, установленные процедурой SetFillStyle. Если al =0°, а а2=360°, то на экран выводится закрашенная окружность.

Процедура Sector(X,Y: integer; al,a2,Rx;Ry: word); строит закрашенный сектор эллипса.

 

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: