Работа с графикой в 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.

2 Комментария “Работа с графикой в PascalABC

  1. Большое спасибо.Хорошо представлен материал, удобнее чем в справке языка.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *