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



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

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

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

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

Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;

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

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

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

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

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

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

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

Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;

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

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

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

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

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

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

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

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

Цвета в 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. Определите координаты и составьте программу, выводящую на экран рисунок  дома и дерева.

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

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

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.

Подписаться
Уведомить о
guest

17 комментариев
Новые
Старые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
ЫПВФ
ЫПВФ
2 месяцев назад

ТАК СЕБЕ

вааа
вааа
2 месяцев назад

мяууу

fyjy
fyjy
1 год назад

урок топовый

Любовь
Любовь
1 год назад

Спасибо, все наглядно и понятно

Гость 2
Гость 2
1 год назад

Урок очень наглядный , спасибо , правда после того как я скачал исходный код примера домика скомпилировал его и вставил в Pascal я начал его запускать через программу , ничего не было , и нечаянно по привычке запустил через консоль и антивирус выдал Win32:MicsX-gen . Мне ещё один урок Не скачивать всё подряд в интернете

Гость 2
Гость 2
Ответить на  Гость 2
1 год назад

Хотя похоже не в том месте Pascal скачал

Гость
Гость
1 год назад

В этой статье написано, что размер окна по умолчанию 640×400. Разве не 640×480?

Валерий
Валерий
2 лет назад

СПАСИБО ВАМ БОЛЬШОЕ ЭТО ОЧЕНЬ ПОНЯТНЫЙ И НАГЛЯДНЫЙ УРОК.

Енот
Енот
3 лет назад

Сайт написан умными людьми. Информация самая полезная. Спасибо вам!

Вова
Вова
3 лет назад

Очень помогло!! спасибо за такую информацию

Галина Гаврюкова
Галина Гаврюкова
3 лет назад

Давно пользуюсь Вашими разработками. Большое спасибо.
Ищу урок о преобразовании компьютерной системы координат в математическую в PascalABC.
Для Visual Basic у Вас такой урок есть.

Маря
Маря
3 лет назад

Зашибись, классно

владимир
владимир
3 лет назад

Прекрасно и доходчиво изложен материал.Очень мне помог.Спасибо

Алексей
Алексей
3 лет назад

Спасибо большое! Просто и доступно!

Alex
Alex
4 лет назад

Спасибо! Доступно и методически грамотно изложено.

Алла
Алла
6 лет назад

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

Людмила
Людмила
8 лет назад

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