Графика в Паскале.

Сейчас, в преддверии Нового Года мне хочется Вас немного «повеселить». Предупреждаю, графика в Паскале не для всех веселая тема. Эта статья не будет посвящаться тому, чтобы обучать Вас этому делу. Но, скорее всего, до этого мы дойдем в других статьях.

В этой же — я хочу показать на Вам примерах, чего можно достичь, используя модуль Graph в Паскале, а в компиляторе PascalABC.NET — GraphABC, который работает несколько по-другому. И вот пример простейшей программы для компилятора PascalABC.NET.

Program snegovik; 
uses graphABC;
begin 
FloodFill(50, 80, clYellow); 
setpenwidth(3); 
setwindowsize(400, 500); 
ellipse(120, 350, 280, 480); 
circle(200, 300, 60);
circle(200, 210, 40); 
line(170, 120, 230, 120);  
line(160, 180, 240, 180);
line(170, 120, 160, 180);
line(230, 120, 240, 180);
floodfill(200, 173, clblack);
floodfill(200, 123, clblack);
setbrushcolor(clblack);
circle(190, 200, 5);
circle(210, 200, 5);
line(200, 210, 220, 220);
line(200, 220, 220, 220);
line(200, 210, 200, 220);
floodfill(204, 214, clblack);
setpenwidth(5);
line(210, 230, 190, 230);
line(70, 320, 170, 250);
line(230, 250, 330, 300);
 line(327, 450, 327, 200);
circle(200, 265, 10);
circle(200, 300, 10);
circle(200, 338, 10);
circle(200, 390, 10);
circle(200, 428, 10);
circle(200, 460, 10);
end.

Данная программа нарисует снеговика. setpenwidth(3) — устанавливается толщина кисти,ellipse рисует эллипс.circle(x,y,r) рисует окружность с центром в точке (x,y) радиусом r. Команда FloodFill(x,y,color) принимает 3 параметра и заливает область, начиная из точки с координатами (x,y) цветом color.

Команда Line(x, y, x1, y1) — это линия, а (x,y, x1,y1,) — координаты точек начала и конца отрезка, setbrushcolor(clblack) — устанавливается цвет кисти. Вот пример следующей программы, которая нарисует нарядную новогоднюю елочку.

Program Elka;
uses GraphABC;
begin
for var i := 1 to 100 do
 begin
Pen.Color := RGB(2, 200, i);
Line(100 - i, i, 100 + i, i);
end;
for var i := 1 to 100 do
begin
Pen.Color := RGB(0, i, 0);
Line(100 - i, i + 100, 100 + i, i + 100);
end;
for var i := 1 to 100 do
begin
Pen.Color := RGB(0, i, 0);
Line(100 - i, i + 200, 100 + i, i + 200);
end;
Setpenwidth(1);
Setpencolor(clBrown);
Rectangle(75, 301, 125, 375);
FloodFill(77, 350, clBrown);
Circle(50, 80, 20);
Circle(153, 80, 20);
Circle(100, 50, 15);
Circle(100, 160, 20);
Circle(50, 180, 20);
Circle(153, 180, 20);
Circle(100, 255, 20);
Circle(153, 277, 20);
Circle(50, 277, 20);
FloodFill(50, 80, clRed);
FloodFill(153, 80, clRed);
FloodFill(100, 50, clBlue);
FloodFill(100, 160, clPurple);
FloodFill(50, 180, clYellow);
FloodFill(153, 180, clYellow);
FloodFill(50, 277, clYellow);
FloodFill(100, 255, clRed);
FloodFill(153, 277, clYellow);
end.

В циклах рисуются треугольники(сама елочка). Причем, они не однотонные, это достигается так, что при увеличении счетчика i изменяется цвет и длина линии, остальные команды упомянуты выше. Я хочу привести пример результата работы уже готовой программы, которая гораздо сложнее предыдущих, кроме того, в ней используется объектно-ориентированное программирование, что намного сложней, чем структурное программирование.

Результат этой программы вы видите на скриншоте компилятора — это анимация. К этой программе мы вернемся позже, когда будем осваивать ООП(объектно-ориентированное программирование).

Рейтинг
( Пока оценок нет )
Загрузка ...