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




РАБОТА С ГРАФИКОЙ В PASCAL ABC

 

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

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

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

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

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

Uses GraphABC;

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

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

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

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

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

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

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

Цвета в 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

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

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.

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

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

 

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

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 домов. Внесите соответствующие дополнения и изменения в предыдущую программу.

Весь наш “поселок” выстроился вдоль горизонтальной оси экрана – оси 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.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-12-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: