Янв
10th

Работа с графикой в PascalABC

Графическое изображение, созданное в PascalABCПосле запуска PascalABC, по умолчанию, запускается текстовый режим. Для работы с графикой служит отдельное графическое окно.

Чтобы его открыть, необходимо подключить модуль GraphABC. В этом модуле содержится набор процедур и функций, предназначенных для работы с графическим экраном, а также некоторые встроенные константы и переменные, которые могут быть использованы в программах с графикой.

С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.

Подключение осуществляется в разделе описаний.

Формат подключения модуля GraphABC:

Uses GraphABC;

Графический экран PascalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали. Начало отсчета – левый верхний угол экрана. Ось x направлена вправо, а ось y –вниз. Координаты исчисляются в пикселях.

Все команды библиотеки GraphABC являются подпрограммами и описаны в виде процедур и функций. Для того, что бы команда выполнилась необходимо указать команду и задать значения параметров.

Управление графическим окном

Управление графическим окном

Управление графическим окном

Процедуры рисования графических примитивов

Процедуры рисования графических примитивов

Процедуры, используемые для работы с цветом

Процедуры для работы с цветом

Процедуры для работы с текстом

Процедуры для работы с текстом

Цвета в PascalABC

Цвета в PascalABC

Пример графической программы, рисующей изображение дома:

Program Domik;
uses Graphabc;   //подключение модуля   GraphABC
begin
SetWindowWidth(800);     //ширина окна программы
SetWindowHeight(600);    //высота окна программы
SetPenWidth(3);          //толщина пера
SetFontSize(18);         //размер шрифта
SetFontColor(clRed);     //цвет шрифта
SetFontStyle(fsBold);    //жирный стиль шрифта
TextOut(100,100,'Домик');  //текст
Rectangle(200, 300, 600,600); //дом
Circle(400,225, 40);        //круг
SetBrushColor(clAqua);      //цвет заливки окна
FillRect(300, 400,500,500); //процедура заливки окна
rectangle(300,400,500,500); //окно
Line(400,400,400,500);      // окно
Line(300,450,500,450);      //окно
Line(200,300,400,150);      //крыша
Line(400,150,600,300);      //крыша
Line(480,210,480,160);      //труба
Line(480,160,520,160);      //труба
Line(520,160,520,240);      //труба
end.
Рисунок в PascalABC

Рисунок в PascalABC

Программа, рисующая фигурку:

Program Figurka;
uses GraphABC;
begin
SetWindowSize(500, 500);  //задаем размер графического  окна
SetPenWidth(3);            //устанавливаем стиль пера
SetBrushColor(clFuchsia);  //устанавливаем цвет кисти
Circle(225,160,50);         //рисуем окружность
Line(225,160,225,180);      //рисуем линии
Line( 210,190,240,190);
Line(  225,210,225,250);
Line( 100,100,200,260);
Line( 200,260,400,260);
Line( 210,350,200,480);
Line(240,350,250,480);
Rectangle(200,230,250,350);   //рисуем прямоугольник
SetBrushColor(clLime);
FillRect(0, 480,500,500);     //рисуем закрашенный прямоугольник
SetBrushColor(clWhite);
Circle(205,150,10);
Circle(245,150,10);
end.

Рисунок   в PascalABC

Практическая работа за компьютером

Задание 1. Определите координаты и составьте программу, выводящую на экран рисунк  дома и дерева.

 

domok-2

Программа будет иметь вид:

Program domik_2;
uses GraphABC;
var i: integer;
st:string;
begin

SetWindowSize(500, 500);
{Коричневая стена}
SetPenWidth(2);
SetBrushColor(clBrown);
FillRect(100,50,150,100);

{Крыша желтого цвета}
SetPenColor(clBrown);
Line(125,25,80,75);
Line(125,25,170,75);
FloodFill(125, 30,clYellow);
{Крона дерева}
SetPenColor(clGreen);
SetBrushColor(clGreen);
Ellipse(100,150,150,200);

{ствол дерева}
SetBrushColor(clBrown);
FillRect(120,200,130,230);
end.

Задание 2. Используя оператор цикла и введя переменную для пересчета координат по оси  x, постройте “поселок”, состоящий из 5 домов. Внесите соответствующие дополнения и изменения в предыдущую программу.

Рисунок в PascalABC

Весь наш “поселок” выстроился вдоль горизонтальной оси экрана – оси X. Построение рисунка начинается с левого верхнего угла стены первого дома – точки с координатами (100, 50). Координата Y не изменяется. Чтобы начать рисовать второй домик, нужно координату X увеличить на 150 (50 точек – ширина первого дома и 100 точек – расстояние между домиками).

Выберем в качестве параметра цикла целочисленную переменную X.

Для всех элементов нашего рисунка абсолютное значение координаты X заменим на относительное. Например, для стены дома процедура для рисования запишется следующим образом:

FillRect(x,50,x+50,100);

Сформулируем условие выполнения цыклических действий для нашей задачи.Какие координаты имеет левый верхний угол пятого дома? Конечное значение выбранного нами параметра цикла x = 700. Тогда условие выполнения цикла записывается так: x<=700.

Словесное описание алгоритма коротко можно записать так:

Переменной цикла x присвоить начальное значение 100. Пока x<=700 выполнять серию действий “Нарисуй дом и дерево”, после каждого фрагмента рисунка увеличивать значение переменной цикла  на 150.

Программа будет иметь вид:

Program Domik;
uses GraphABC;
var i: integer;
st:string;
x:integer;
begin
SetWindowSize(800, 500);
x:=100;
While x<=700 do
begin
{Коричневая стена}
SetPenWidth(2);
SetBrushColor(clBrown);
FillRect(x,50,x+50,100);

{Крыша желтого цвета}
SetPenColor(clBrown);
Line(x+25,25,x-20,75);
Line(x+25,25,x+70,75);
FloodFill(x+25, 30,clYellow);
{Крона дерева}
SetPenColor(clGreen);
SetBrushColor(clGreen);
Ellipse(x,150,x+50,200);

{ствол дерева}
SetBrushColor(clBrown);
FillRect(x+20,200,x+30,230);
x:=x+150;
end;
end.

Поделиться с друзьями



Один комментарий к “Работа с графикой в PascalABC”

  1. Людмила | Фев 8, 2016 | Ответить

    Отличное подспорье в подготовке к уроку. Спасибо

Оставить комментарий или два