Графика Pascal
В Pascal ABC для работы с графикой отвечает модуль GraphABC. Для его подключения применяется следующий код:
usesGraphABC;
begin
…
end.
Система координат в Pascal соответствует экранной системе координат. Вот как она выглядит:
Как управлять цветом
Чтобы использовать цвет, нужно применять его инструменту перо:
Устанавливает цвет пера, который создает параметр color. | SetPenColor(color) |
Устанавливает цвет кисти, который задается параметром color. | setBrushColor(color) |
Для палитры RGB или для заливки. | SetPenColor(rgb(0-255, 0-255, 0-255)) |
Заливает область одного цвета, заданным color с точки (х, у). | FloodFill(x,y,color) |
Затем можно использовать процедуры для рисования различных геометрических фигур.
Основные процедуры (команды)
Номер цвета | Имя константы | Цвет |
0 | Black | Черный |
1 | Blue | Темно-синий |
2 | Green | Темно-зеленый |
3 | Cyan | Бирюзовый |
4 | Red | Красный |
5 | Magenta | Фиолетовый |
6 | Brown | Коричневый |
7 | LightGray | Светло-серый |
8 | DarkGray | Темно-серый |
9 | LightBlue | Синий |
10 | LightGreen | Светло — зеленый |
11 | LightCyan | Светло-бирюзовый |
12 | LightRed | Розовый |
13 | LightMagenta | Малиновый |
14 | Yellow | Желтый |
15 | White | Белый |
К примеру, цвет линий на экране можно задать следующим образом:
1 SetColor(14); // Будет желтый цвет
Установка цвета фона
Для того чтобы установить цвет фона всему экрану, применяется следующая процедура:
1 SetBkColor(14);
Внимание! Если она не вызвана, то экран будет черным.
Точки, отрезки и ломаные
В Pascal для отображения точки используется процедура:
SetPixel(x,y,color) — Закрашивает один пиксел с координатами (x,y) цветом color
usesGraphABC;
begin
SetPixel(300,200,clred);
end.
Для рисования линии применяется:
Line(x1,y1,x2,y2) — рисует отрезок с началом (x1,y1) и концом в x2,y2
usesGraphABC;
begin
SetPenColor(clgreen);
line(100,50,500,250);
end.
Для рисования ломаных линий применяются следующие процедуры: MoveTo (x1, y1) и LineTo (x2, y2).
Процедуры работают вместе: MoveTo передвигает курсор в необходимую точку, а процедура LineTo рисует линию с данной точки до точки, определенной параметром этой процедуры.
usesGraphABC;
begin
…
SetPenColor(clblue);
MoveTo(x1, y1);
LineTo(x2, y2);
LineTo(x3, y3);
LineTo(x4, y4);
LineTo(x5, y5);
end.
Задание. Нарисовать квадрат и равносторонний треугольник с помощью SetPenColor(), LineTo (x2, y2) и MoveTo (x1, y1).
Для установки размеров графического окна применяется процедура
SetWindowSize(ширина, высота)
или, например:
SetWindowWidth(600);
SetWindowHeight(400);
Рисование фигур
Прямоугольник в Pascal рисуется:
Rectangle(x1,y1,x2,y2) — рисует прямоугольник с координатами противоположных вершин (x1,y1) и (x2,y2).
usesGraphABC;
begin
Rectangle(50,50,200,200);
end.
Фигуры с заливкой:
usesGraphABC;
begin
Rectangle(50,50,200,200);
FloodFill(100,100,clBlue);
end.
Треугольник рисуется процедурами:
Line(x1,y1,x2,y2);
LineTo(x,y);
usesGraphABC;
begin
setpenwidth(20);
setpencolor(clred);
moveTo(300,100);
lineTo(500,300);
lineto(100,300);
lineto(300,100);
floodfill(300,200,clgreen);
end.
Круг
С помощью данной процедуры можно нарисовать окружность:
Circle(x,y,r) — рисует окружность с центром в точке (x,y) и радиусом r.
usesGraphABC;
begin
Circle(500,200,100);
FloodFill(500,200,clred);
end.
Дуга окружности
Arc(x,y,r,a1,a2) — позволяет нарисовать дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).
usesGraphABC;
Begin
SetPenWidth(10);
Arc(300,250,150,45,135);
end.
Задача 1: «Лягушка»
Задача 2: «Корона»
Функция random для использования окраски
SetPenColor (rgb(random(256), random(256), random(256))); — выбирает рандомное число из 256-цветной палитры для цветов: красного, зеленого и синего.
Задача 3: Нарисовать горизонтальный ряд окружностей радиусом 10 на расстоянии 100 от верхнего края экрана и с такими горизонтальными координатами 50, 80, 110, 140, … , 290.
* круги должны быть раскрашены случайным цветом.
Задача 4: «Круги на воде».
Условие: Нарисуйте несколько десятков концентрических окружностей (окружностей разного радиуса с общим центром).
Задача 5: Воспроизвести изображение с помощью приложения:
Штриховка
Нарисовать штриховку на Pascal можно, применяя процедуры рисования прямоугольника и линии:
В результате получится следующий код:
usesgraphABC;
var i, x1, x2, y1, y2, N:integer;
h, x:real;
begin
x1 :=100; y1 :=100;
x2 :=300; y2 :=200;
N :=10;
Rectangle(x1, y1, x2, y2);
h :=(x2 — x1)/(N +1);
x := x1 + h;
for i:=1to N dobegin
Line(round(x), y1,round(x), y2);
x := x + h;
end;
end.
Анимация в Паскале
Анимация в Pascalсостоит в том, что первым рисуется фигура цветным инструментом, после чего с такими же координатами рисуется та же фигура белым цветом. Затем происходит сдвиг фигуры. И так действия повторяются.
Воспроизвести движение круга по горизонтали. Пример:
usesGraphABC;
var x:integer;
begin
x:=40;
repeat
SetPenColor(clWhite);
Circle(x,100,10); {Рисуем белую окружность}
SetPenColor(clBlack);
Circle(x,100,10); {Рисуем черную окружность}
x:=x+1 {Перемещаемся немного направо}
until x>600;
end.
Задача 6: Создать анимацию движения квадрата по заданной траектории:
А как у вас обстоят дела с графикой в Pascal? Поделитесь своим опытом, оставив комментарий.