|
Построение сложных графических объектов
Научимся строить сложные графические объекты:
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 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|