Сделай Сам Свою Работу на 5

Построение сложных графических объектов

Научимся строить сложные графические объекты:

   
1. Построение дуги окружности текущим цветом

 

  Аrc (X, Y, α1, α2, R); (X,Y) – координаты центра дуги, R – радиус, α1, α2 – начальный и конечный углы, которые образуют концы дуги с горизонтальной осью (отсчитываются против часовой стрелки).

 

2. Построение дуги эллипса текущим цветом: Ellipse (X, Y, α1, α2, RX, RY);

где (X,Y) – координаты центра эллипса, RX, RY – длины горизонтальной и вертикальной полуосей (большого и малого радиусов), α1, α2 – начальный и конечный углы, которые образуют концы дуги с горизонтальной осью (отсчитываются против часовой стрелки).

Примеры:

1. Ellipse (100, 100, 0, 360, 70, 30); Построение эллипса с центром в точке (100, 100) и длинами полуосей 70 и 30.

2. Arc (250, 200, 90, 270, 100); Построение «левой» полуокружности с центром в точке (250, 200) и радиусом 100.

Заполнение областей изображения

Пусть на экране компьютера получено изображение некоторого замкнутого контура с использованием цвета С (С – цвет контура области) и задана некоторая точка экрана (X, Y). Если данная точка принадлежит области, ограниченной контуром, то эта область может быть заполнена текущим цветом с помощью процедуры: FloodFill (X, Y, C); Если точка находится вне области, происходит заполнение внешней к контуру области.

Для выбора стиля (шаблона и цвета) заполнения области используется процедура SetFillStyle: SetFillStyle (шаблон, цвет заполнения) ;

Значения шаблона задаются равными: 0 (сплошной цвет фона), 1 (сплошной текущий цвет), 2-6 (штриховка различной толщины и наклона), 7-9 (заполнение клеткой различной толщины и наклона), 10-11 (заполнение редкими и частыми точками).

При использовании SetFillStyle цвет заполнения может быть не равен цвету контура.

Примеры заполнения областей изображений:

1) прямоугольного треугольника белым цветом (с контуром желтого цвета на зеленом фоне): 0 160 240 320 400 480 639     Program Triangle_1; Uses Graph ; Var a, b : Integer ; Begin a:=Detect; InitGraph (a, b, ''); SetBkColor (Green); SetColor (14); Line (240, 70, 240, 270); Line (240, 270, 400, 270); Line (240, 70, 400, 270); FloodFill (320, 260, 14); Readln; CloseGraph End.
2) прямоугольного треугольника красным цветом (с контуром желтого цвета на зеленом фоне)   {корректировка программы Triangle_1} … Line (240, 70, 400, 270); SetFillStyle (1, 4); {сплошной красный} FloodFill (320, 260, 14); …
2) прямоугольной трапеции штриховкой светло-серого цвета нормальной толщины: 0 240 350 450 639   Program TRAPECIA_3; Uses Graph ; Var a, b : Integer ; Begin a:=Detect; InitGraph (a, b, ''); SetColor (1); {синий контур} MoveTo(240,60); LineTo (240,200); LineTo (450,200); LineTo (350,60); LineTo (240,60); SetFillStyle (3, 7); FloodFill (350, 175, 1); Readln; CloseGraph End.
3) окружности желтым цветом, которая после нажатия на клавишу “Enter” изменяет цвет заливки на зеленый цвет: 0 320 639     Program CIRC; Uses Graph ; Var a, b : Integer ; Begin a:=Detect; InitGraph (a, b, ''); SetColor (14); {желтый контур} Circle (320, 175, 50); SetFillStyle (1, 14); {желтая заливка} FloodFill (320, 175, 14); Readln; ClearDevice; {очистка экрана} SetColor (14); {желтый контур} Circle (320, 175, 50); SetFillStyle (1, 2); {зеленая заливка} FloodFill (320,175,14); Readln; CloseGraph End.

* Процедуры, обеспечивающие заполнение специальных областей изображения (эллипса, секторов круга и эллипса, параллелепипеда):



1. Построение эллипса, закрашенного текущим узором и цветом заполнения: FillEllipse (X, Y, RX, RY); где (X,Y) – координаты центра эллипса, RX, RY – длины горизонтальной и вертикальной полуосей.

2. Получение изображения сектора круга и заполнение его текущим узором: PieSlice (X, Y, α1, α2, R); где (X,Y) – координаты центра, α1, α2 - начальный и конечный углы сектора, R – его радиус. Использование процедуры удобно при построении круговых диаграмм.

3. Изображение сектора эллипса, закрашенного цветом по текущему шаблону: Sector (X, Y, α1, α2, RX, RY) ;

4. Получение изображения параллелепипеда, передняя грань которого может быть закрашена по текущему шаблону:

Bar3D (X1, Y1, X2, Y2, D, Top);

где (X1, Y1), (X2, Y2) – координаты диагональных точек передней грани (прямоугольника), D – ширина боковой грани, Top – признак отображения верхней грани (TRUE – отображать, FALSE – не отображать).

Практическая часть.

Напишите программы получения изображений (по вариантам):

а)     б) в) г) д)
е)
 
 

 

ж) з) и) к)

 



©2015- 2019 stydopedia.ru Все материалы защищены законодательством РФ.