- •Листинги программ к статье и. М. Павловой "графика на паскале"
- •1. Создание рисунков с использованием прямой линии
- •1.1. Использование процедур MoveTo, LineTo
- •1.2. Использование процедуры Line
- •2. Создание рисунков с использованием прямоугольников
- •2.1. Использование процедур Rectangle, Bar
- •2.2. Создание рисунков с использованием процедур для работы с прямоугольниками и процедур для работы с текстом
- •3. Создание рисунков с использованием окружностей, эллипсов, дуг, секторов
- •3.1. Использование процедуры Circle
- •3.2. Использование процедур Ellipse, FillEllipse
- •3.3. Использование процедур PieSlice, FloodFill
- •3.4. Использование подпрограмм и процедур рисования окружностей, эллипсов, дуг, линий, закраски замкнутой фигуры
- •4. Организация движения
- •4.1. Стирание изображения и восстановление его в новом месте
- •4.2. Организация движения с использованием динамической памяти
3.3. Использование процедур PieSlice, FloodFill
Задание 3.3.1. Нарисовать любимого литературного героя или героя любимого кинофильма (мультфильма) либо создать автопортрет. Приведенная ниже программа рисует портрет Барта Симпсона.
uses
graph, crt;
const
x=235;
y=32;
var
error, gd, gm, i: integer;
begin
gd:=vga;
gm:=vgahi;
initgraph(gd, gm, 'd:\bp\bgi');
error:=graphresult;
if error<>grok then
begin
writeln('Ошибка открытия графики');
halt(1)
end;
setfillstyle(1, white);
floodfill(1, 1, white); {Фон экрана}
setcolor(black); {Голова}
moveto(x, y);
lineto(x+5, y+8); {Волосы}
for i:=1 to 14 do
begin
x:=x+5;
if i mod 2 <>0 then lineto(x, y+8) else lineto(x, y)
end;
lineto(301, 84);
moveto(235, 32);
lineto(239, 57);
arc(240, 62, 94, 250, 6); {Бровь}
arc(250, 74, 40, 250, 15); {Левый глаз}
arc(252, 81, 0, 198, 4);
circle(273, 74, 16); {Правый глаз}
circle(277, 80, 4);
arc(253, 88, 45, 270, 8); {Нос}
moveto(253, 97);
lineto(260, 97);
moveto(239, 85);
lineto(239, 100);
arc(258, 95, 193, 270, 19); {Улыбка}
moveto(259, 114);
lineto(284, 114);
arc(282, 95, 276, 329, 19);
moveto(268, 103);
lineto(280, 106);
arc(302, 93, 245, 110, 9); {Ухо}
arc(300, 96, 20, 85, 7);
arc(270, 116, 150, 240, 6); {Шея}
arc(263, 133, 17, 85, 13);
arc(314, 100, 188, 240, 12);
arc(312, 157, 93, 144, 47);
setfillstyle(1, yellow); {Закраска лица}
floodfill(260, 50, black);
setfillstyle(1, black); {Зрачки}
floodfill(252, 78, black);
floodfill(277, 80, black);
setcolor(black);
arc(312, 158, 93, 144, 47); {Горловина футболки}
arc(297, 139, 148, 200, 25); {Левая часть футболки}
arc(300, 177, 130, 200, 41);
arc(269, 140, 349, 39, 50); {Правая часть футболки}
arc(385, 137, 191, 226, 67);
arc(273, 150, 255, 283, 42); {Низ футболки}
arc(322, 109, 261, 283, 79);
ellipse(300, 146, 15, 176, 15, 20); {Рукав}
line(285, 146, 315, 146);
arc(246, 161, 320, 19, 46); {Левая сторона руки}
arc(263, 160, 310, 20, 54); {Правая сторона руки}
arc(302, 178, 209, 272, 25); {Карман}
setfillstyle(1, lightred);
floodfill(300, 120, black); {Закраска футболки}
floodfill(300, 143, black);
setcolor(yellow);
setfillstyle(1, yellow);
floodfill(300, 150, black); {Закраска руки}
setcolor(black); {Шорты}
arc(290, 184, 190, 230, 30); {Левая штанина шорт}
line(270, 207, 269, 218);
line(297, 225, 295, 251);
line(269, 218, 300, 225); {Низ левой штанины}
arc(296, 162, 240, 281, 43); {Складка кармана}
line(307, 215, 300, 225); {Левая нога}
line(272, 219, 274, 251);
arc(284, 211, 253, 289, 42); {Левый носок}
arc(282, 257, 155, 200, 12);
arc(286, 255, 340, 23, 12);
arc(283, 222, 253, 289, 41);
arc(280, 285, 98, 163, 23); {Левый ботинок}
arc(280, 275, 350, 45, 20);
arc(278, 221, 252, 293, 62);
arc(278, 226, 252, 293, 62); {Подошва левого ботинка}
line(258, 281, 258, 284);
line(301, 280, 301, 284);
arc(305, 179, 278, 350, 35); {Шорты, правая штанина}
line(332, 202, 334, 220);
line(307, 215, 308, 223);
line(334, 220, 308, 223); {Низ правой штанины}
line(332, 221, 332, 251); {Правая нога}
line(309, 224, 311, 251);
arc(322, 208, 254, 287, 45); {Правый носок}
arc(322, 255, 155, 200, 12);
arc(323, 255, 340, 23, 12);
arc(322, 223, 253, 289, 39);
arc(314, 273, 98, 213, 11); {Правый ботинок}
arc(320, 275, 359, 45, 20);
arc(318, 222, 256, 293, 59); {Подошва правого ботинка}
arc(318, 227, 256, 293, 59);
line(341, 277, 341, 281);
line(303, 279, 304, 283);
setcolor(lightblue); {Закрашиваем}
setfillstyle(1, lightblue);
floodfill(272, 218, black); {шорты}
floodfill(278, 276, black); {левый ботинок}
floodfill(322, 267, black); {правый ботинок}
setcolor(yellow);
setfillstyle(1, yellow);
floodfill(275, 221, black); {левую ногу}
floodfill(322, 224, black); {правую ногу}
setcolor(white);
setfillstyle(1, white);
pieslice(320, 274, 0, 360, 3); {Белое пятнышко на правом ботинке}
readln;
closegraph;
end.
