Как сделать картинку на паскале

Графика Pascal

В Pascal ABC для работы с графикой отвечает модуль GraphABC. Для его подключения применяется следующий код:

Система координат в Pascal соответствует экранной системе координат. Вот как она выглядит:

Как сделать картинку на паскале

Как управлять цветом

Чтобы использовать цвет, нужно применять его инструменту перо:

Устанавливает цвет пера, который создает параметр color.SetPenColor(color)
Устанавливает цвет кисти, который задается параметром color.setBrushColor(color)
Для палитры RGB или для заливки.SetPenColor(rgb(0-255, 0-255, 0-255))
Заливает область одного цвета, заданным color с точки (х, у).FloodFill(x,y,color)

Затем можно использовать процедуры для рисования различных геометрических фигур.

Основные процедуры (команды)

Номер цветаИмя константыЦвет
0BlackЧерный
1BlueТемно-синий
2GreenТемно-зеленый
3CyanБирюзовый
4RedКрасный
5MagentaФиолетовый
6BrownКоричневый
7LightGrayСветло-серый
8DarkGrayТемно-серый
9LightBlueСиний
10LightGreenСветло — зеленый
11LightCyanСветло-бирюзовый
12LightRedРозовый
13LightMagentaМалиновый
14YellowЖелтый
15WhiteБелый

К примеру, цвет линий на экране можно задать следующим образом:

Установка цвета фона

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

Внимание! Если она не вызвана, то экран будет черным.

Точки, отрезки и ломаные

В Pascal для отображения точки используется процедура:

SetPixel(x,y,color) — Закрашивает один пиксел с координатами (x,y) цветом color

Как сделать картинку на паскале

Для рисования линии применяется:

Line(x1,y1,x2,y2) — рисует отрезок с началом (x1,y1) и концом в x2,y2

Как сделать картинку на паскале

Для рисования ломаных линий применяются следующие процедуры: 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).

Для установки размеров графического окна применяется процедура

Рисование фигур

Прямоугольник в Pascal рисуется:

Rectangle(x1,y1,x2,y2) — рисует прямоугольник с координатами противоположных вершин (x1,y1) и (x2,y2).

Как сделать картинку на паскале

Фигуры с заливкой:

Как сделать картинку на паскале

usesGraphABC;
begin
Rectangle(50,50,200,200);
FloodFill(100,100,clBlue);
end.

Треугольник рисуется процедурами:

Как сделать картинку на паскале

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.

Как сделать картинку на паскале

Дуга окружности

Arc(x,y,r,a1,a2) — позволяет нарисовать дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы a1 и a2 с осью OX (a1 и a2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки).

Как сделать картинку на паскале

Задача 1: «Лягушка»

Как сделать картинку на паскале

Задача 2: «Корона»

Как сделать картинку на паскале

Функция random для использования окраски

SetPenColor (rgb(random(256), random(256), random(256))); — выбирает рандомное число из 256-цветной палитры для цветов: красного, зеленого и синего.

Задача 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состоит в том, что первым рисуется фигура цветным инструментом, после чего с такими же координатами рисуется та же фигура белым цветом. Затем происходит сдвиг фигуры. И так действия повторяются.

Воспроизвести движение круга по горизонтали. Пример:

Задача 6: Создать анимацию движения квадрата по заданной траектории:

Как сделать картинку на паскале

А как у вас обстоят дела с графикой в Pascal? Поделитесь своим опытом, оставив комментарий.

Источник

Графика в Паскаль

Графика в Паскаль

Основные цвета в графических программах на паскале

clBlack – черный
clPurple – фиолетовый
clWhite – белый
clMaroon – темно-красный
clRed – красный
clNavy – темно-синий
clGreen – зеленый
clBrown – коричневый
clBlue – синий
clSkyBlue – голубой
clYellow – желтый
clCream – кремовый
clAqua – бирюзовый
clOlive – оливковый
clFuchsia – сиреневый
clTeal – сине-зеленый
clGray – темно-серый
clLime – ярко-зеленый
clMoneyGreen – цвет зеленых денег
clLtGray – светло-серый
clDkGray – темно-серый
clMedGray – серый
clSilver – серебряный

Рисование точки в Паскаль

Пример программы в паскаль рисование красной точки
uses GraphABC;
begin
setWindowSize(500, 500);
putPixel(30, 30, clRed);
end.

Рисование линии в Паскаль

line(x1, y1, x2, y2) x1, y1 это координаты начала линии, x2, y2 координаты конца линии.

Пример программы в Паскаль рисование линии
uses GraphABC;
begin
setWindowSize(500, 500);
line(30, 30, 40, 40, clBlue);
end.

Рисование прямоугольника в Паскаль

rectangle(x1, y1, x2, y2) x1, y1 это координаты первой точки, x2, y2 координаты второй точки.

Рисование окружности в Паскаль

drawcircle(x, y, r) где x и y это координаты центра окружности, r это радиус окружности.

пример программы на Паскаль рисование окружности
uses GraphABC;
begin
setWindowSize(500, 500);
drawcircle(47, 47, 10);
end.

Для того,чтобы нарисовать закрашенный круг используется набор команда
SetBrushColor(цвет заполнения круга);
SetPenColor(цвет границы);
cirlce(x, y, r) где x и y это координаты центра круга, r это радиус круга

Пример программы на паскаль для рисования закрашенного круга

uses GraphABC;
begin
setWindowSize(500, 500);
SetBrushColor(clGreen);
SetPenColor(clRed);
circle (100,100,50);
end.

Пример программы в паскаль рисование дуги и сектора
uses GraphABC;
begin
setWindowSize(500, 500);
arc(10, 200, 50, 0, 60);
pie(10, 300, 50, 0, 60);
end.

Для вывода текста на экран в графическом режиме Паскаль

Пример программы на паскаль рисование закрашенного прямоугольника

Полезно почитать по теме графика в паскаль

Источник

Построение графических изображений средствами языка программирования Pascal

Оборудование: проектор, экран.

I. Подготовка к изучению нового материала через повторение и актуализацию опорных знаний

1. Повторение:

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

7. Символьные величины.

2. На проверку усвоения служебных слов выполнить кроссворд.

У каждого на рабочем столе компьютера находится раздаточный материал

Как сделать картинку на паскале

Слова по горизонтали:

1. Служебное слово оператора цикла с предусловием.
2. Вещественный тип данных.
3. Операция, с помощью которой можно определить предыдущий по номеру символ.
5. Раздел описания переменных начинается со слова.
6. Эта операция доступна только для целых чисел.
7. С этого слова начинается условный оператор.
8. Открывающий операторную скобку.
9. Символьные переменные описываются с помощью этого слова.
10. Если логическое выражение истинно, то выполняется группа операторов, стоящих после этого служебного слова.
11. Это слово является частью оператора для двух видов цикла.
12. Смысл этого слова –»повторять».

Слова по вертикали:

1. Положительные 16-разрядные числа описывают с помощью этого служебного слова.
3. С этого слова начинается текст программы.
4. Тип данных, предназначенный для работы с большими целыми числами.
9. Постоянные величины определяют после этого служебного слова.
13. Конец текста программы.
14. Это слово присутствует только в полной форме условного оператора.
15. Отрицание.
16. for…do.

Ответы

Как сделать картинку на паскале

3. Повторить назначение операторов графики по заготовленным карточкам.

Для отработки теоретических знаний, выполняется задание №4.

4. Найди ошибку в программе, исправь её и запусти программу.

Программа выполняет следующее изображение:

Как сделать картинку на паскале

Файл oshibka.pas – раздаточный материал на рабочем столе компьютера.

Program oshibka;
Uses Graph, CRT;
Var gd, gm: integer;
Begin
gd:= 0;
InitGraph (gd, gm, ‘C:/BP/BGI’)
SetColor(15);
rectangle (100,600,530,370);
SetFillStyle (1,3); FloodFill (320,240,15);
SetColor(4)
Cirkle (320,240,50);
SetFillStyle (1,5); FloodFill (320,240,15);
Readln;
CloseGraph;
End.

Правильный ответ:

Program oshibka;
Uses Graph, CRT;
Var gd, gm: integer;
Begin
gd:= 0;
InitGraph (gd, gm, ‘C:/BP/BGI’);
SetBkColor (3); (установка цвета фона)
SetColor(15);
rectangle (100,100,530,370); (координаты точек прямоугольника)
SetFillStyle (1,3); FloodFill (320,240,15);
SetColor(4); (отсутствие «;»)
Circle (320,240,50); (ошибка в идентификаторе)
SetFillStyle (1,5); FloodFill (320,240,4); (цвет до которого будет производиться заливка)
Readln;
CloseGraph;
End.

5. Проверка выполнения домашнего задания

Ввести в компьютер программу домашнего задания, взяв за основу файл oshibka.pas

1) Построение ракушки.

Program line;
Uses Graph, CRT;
Var x, y, gd, gm: integer;
Begin
gd:= 0;
InitGraph (gd, gm, ‘C:/BP/BGI’);
setcolor(6);
for i:=1 to 10 do circle(20*i,240,20*i); for i:=1 to 10 do circle(320,8*i*2,10*i);
ReadKey;
CloseGraph;
End.
Как сделать картинку на паскале

2) Построение случайных линий

Program line;
Uses Graph, CRT;
Var x, y, gd, gm: integer;
Begin
randomize$
gd:= 0;
InitGraph (gd, gm, ‘C:/BP/BGI’);
repeat
setcolor(random(15));
line(320,240, random(640), random(480)); line(0, 480, random(640), random(480));
line(640,0, random(640), random(480));
delay(3000);
until keypressed;
ReadKey;
CloseGraph;
End.
Как сделать картинку на паскале

3) Расчертить весь экран в клетку (размер клетки 10 пикселей на 10).

Program line;
Uses Graph, CRT;
Var x, y, gd, gm: integer;
Begin
gd:= 0;
InitGraph (gd, gm, ‘C:/BP/BGI’);
y:=10; x:=10;
while y

Как сделать картинку на паскале

Как сделать картинку на паскале

По мере выполнения учащиеся идут к доске и записывают домашнюю программу, затем объясняют классу (3 человека). Класс по мере обсуждения работ вносит свои предложения.

II. Ознакомление с новым материалам

6. Разбор нового фрагмента программы (анимация)

На доске через проектор появляется программа, действие которой обучающимся необходимо объяснить.

Program line;
Uses Graph, CRT;
Var x, y, gd, gm: integer;
Begin
gd:= 0;
InitGraph (gd, gm, ‘C:/BP/BGI’);
setcolor(6);
for y1:=30 to 450 do
begin
setcolor(2);
bar3d (300, y1,330,y1+30,10,true);
delay(1000);
setcolor(0);
bar3d (300, y1,330,y1+30,10,true);
end;
ReadKey;
CloseGraph;
End.

Программа создаёт анимацию падающего кубика, за счет смены закрашивания объекта в цвет фона и в контрастный цвет.
Необходимо показать выполнение программы компьютером через проектор.

III. Первичное осмысление и закрепление связей и отношений в объектах изучения.

Внесём коррективы, изменим куб на окружность.

Program line;
Uses Graph, CRT;
Var x, y, gd, gm: integer;
Begin
gd:= 0;
InitGraph (gd, gm, ‘C:/BP/BGI’);
setcolor(6);
for y1:=30 to 450 do
begin
setcolor(2);
circle(100,y1,20);
delay(1000);
setcolor(0);
circle(100,y1,20);
end;
ReadKey;
CloseGraph;
End.

Внесём ещё изменения, чтобы окружность двигалась по диагонали.

Program line;
Uses Graph, CRT;
Var x, y, gd, gm: integer;
Begin
gd:= 0;
InitGraph (gd, gm, ‘C:/BP/BGI’);
setcolor(6);
for y1:=30 to 450 do
begin
setcolor(2);
circle(100+y1,y1,20);
delay(1000);
setcolor(0);
circle(100+y1,y1,20);
end;
ReadKey;
CloseGraph;
End.

IV. Постановка задания на дом

Написать программу движения геометрической фигуры, которая не встретилась на уроке, по траектории отличной от программ в классе (Можно дать задание на карточках индивидуально для каждого обучающегося).

V. Подведение итогов урока

Давайте подведём итог нашего урока. Чем мы сегодня занимались на уроке?
Сегодня мы повторили служебные слова и операторы графики (различными способами); отработали построение стандартных графических примитивов; применили циклы при построении более сложных графических изображений; ознакомились с программой, содержащей анимацию, и внесли в неё изменения.

Рефлексия. Работа с оценочными листами и выставление оценок.

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

Источник

Графика на Pascal. Основные процедуры (команды)

В чем заключается вопрос: Как начать работать с графикой на языке Pascal. Основные процедуры(команды).

Сложность: средняя.

Сразу стоит сказать что если вы будите использовать для графики программу PascalABC, то эта статья вам не много не подойдет, за исключение нескольких процедур(команд). Для этой статьи могут использоваться программы Turbo и FreePascal.

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

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

Не надо сильно думать над этой строкой, она практически всегда одинакова. Но про неё расскажу. Как я и сказал это процедура используется для открытия графического режима. У неё 3 параметра:

Графический драйвер Константа режима Растр Палитра Число страниц
ИмяЗначениеИмяЗначение
Detect0Выбор драйвера автоматически
CGA1CgaC00320*200C01
CgaC11320*200C11
CgaC22320*200C21
CgaC33320*200C31
CgaHi4640*2002 цвета1
MCGA2McgaC00320*200C01
McgaC11320*200C11
McgaC22320*200C21
McgaC33320*200C31
mcgaMed4640*2002 цвета1
McgaHi5640*4802 цвета1
EGA3EgaLo0640*20016 цвет.4
EgaHi1640*35016 цвет.2
VGA9VgaLo0640*20016 цвет.2
VgaMed1640*35016 цвет.2
VgaHi2640*48016 цвет.1

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

Если напишете так, будет ошибка:

Ну а дальше осталось только рисовать. В принципе дальше можно не читать всё равно не запомните)). Дальнейший материал поможет вам в решение задач, которые мы вскоре разберем и будем обращаться сюда.

Основные процедуры(команды)

Установка цвета.

Имя константыНомер цветаЦвет
Black0Черный
Blue1Темно-синий
Green2Темно-зеленый
Cyan3Бирюзовый
Red4Красный
Magenta5Фиолетовый
Brown6Коричневый
LightGray7Светло-серый
DarkGray8Темно-серый
LightBlue9Синий
LightGreen10Светло — зеленый
LightCyan11Светло-бирюзовый
LightRed12Розовый
LightMagenta13Малиновый
Yellow14Желтый
White15Белый

Например цвет линий которые будут отображаться на экране можно задать так:

Установка цвета фона.

Чтобы установить цвет фона для всего экрана, используется процедура:

Если процедура установки цвета фона не вызвана, экран будет черным.

Установка указателя вывода.

Процедура MoveTo ( x, y: integer) перемещает указатель в точку с координатами x, y.

Процедура MoveRel ( dx, dy: integer) перемещает указатель на dx, dy пикселей относительно последнего положения.

Функции GetX и GetY возвращают координаты x, y указателя вывода.

Установка точки

Процедура PutPixel ( x, y: integer; color: word) устанавливает точку с координатами ( x, y) и закрашивает ее указанным цветом color.

Функция GetPixel ( x, y: integer): word возвращает значение цвета, в который окрашена точка с координатами ( x, y).

Рисование линий

Процедура Line ( x1, y1, x2, y2: integer) вычерчивает линию между двумя точками экрана с координатами ( x1, y1) и ( x2, y2).

Процедура LineTo ( x, y: integer) вычерчивает линию от последнего положения указателя до точки с координатами ( x, y).

Окружность, эллипс, дуга, сектор

Процедура Circle ( x, y: integer; r: word) вычерчивает окружность радиуса r с центром в точке с координатами ( x, y).

Процедура Arc ( x, y, ugol_ begin, ugol_ end, r: integer) вычерчивает дугу окружности радиуса r с центром в точке с координатами ( x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Отсчет углов ведется против часовой стрелки. Значения угловых координат задается в градусах.

Процедура Ellips ( x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает эллипс или дугу эллипса с центром в точке с координатами ( x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Параметры rx и ry определяют горизонтальный и вертикальный радиусы эллипса.

Процедура PieSlice ( x, y: integer; ugol_ begin, ugol_ end, r: word) вычерчивает сектор окружности радиуса r с центром в точке с координатами ( x, y ). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора.

Сектор может быть закрашен в соответствии со стилем, заданным процедурой SetFillStyle (о ней читайте ниже).

Процедура Sector ( x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает сектор эллипса с центром в точке с координатами ( x, y) и горизонтальным радиусом rx, вертикальным — ry. Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора.

Сектор может быть закрашен в соответствии со стилем, заданным процедурой SetFillStyle.

Прямоугольник, закрашенный прямоугольник, параллелепипед

Процедура Rectangle ( x1, y1, x2, y2: integer) вычерчивает контур прямоугольника. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего.

Процедура Bar ( x1, y1, x2, y2: integer) вычерчивает закрашенный прямоугольник. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего. Стиль и цвет заливки определяется процедурой SetFillStyle.

Процедура Bar3 D ( x1, y1, x2, y2: integer; глубина: word; граница: boolean) вычерчивает параллелепипед. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего угла ближней грани. Параметр глубина задает расстояние между передней и задней гранями в пикселях. Параметр граница определяет, нужно ли вычерчивать верхнюю границу задней грани параллелепипеда. Стиль и цвет заливки ближней грани определяется процедурой SetFillStyle.

Вывод текста в графическом режиме.

Процедура OutText ( text: string) выводит строку символов text от текущей позиции указателя вывода и перемещает указатель в точку, расположенную за последним выведенным символом.

Процедура OutTextXY ( x, y: integer; text: string) выводит строку символов text, начиная с точки с координатами ( x, y), при этом указатель своего положения не меняет, т.е. остается в точке ( x, y ).

Стиль вычерчиваемых линий, контуров

Процедура SetLineStyle ( type, pattern, thick: word) устанавливает стиль вычерчиваемых линий. Здесь type, pattern, thick – соответственно тип, образец и толщина линии.

Тип линии может быть задан с помощью одной из следующих констант:

Параметр Pattern учитывается только для линий, вид которых определяется пользователем, т.е. если type=4. Во всех остальных случаях можно поставить любое значение типа word (но обязательно поставить, все-таки это параметр процедуры, значит должен быть).

Каким образом можно задать пользовательский тип линии? Под тип линии отводится переменная типа word, т.е. два байта. Эти два байта и определяют образец линии: каждый установленный в единицу бит этого слова соответствует светящейся точке, нулевой бит — несветящийся пиксель. Таким образом, задается отрезок линии длиной в 16 пикселей. Этот образец периодически повторяется по всей длине линии.

Параметр thick может принимать одно из двух значений:

Стиль и цвет заливки

Процедура SetFillStyle ( style, color: word) устанавливает стиль и цвет заливки (закрашивания) областей ( Bar, Bar3 D, Sector и др.). В качестве параметра style используют одну из констант:

Стиль вывода текста

Процедура SetTextStyle ( font, orient, size: word) устанавливает шрифт font, ориентацию orient и размер size текста, выводимого на экран. Параметр font может принимать одну из констант:

В 7.0 версии Паскаля набор шрифтов значительно расширен, но для новых шрифтов не придуманы мнемонические константы, поэтому можно использовать такие номера шрифтов:

Замечание: все шрифты, кроме стандартного (матричного), являются векторными, что позволяет изменять их размеры без ухудшения качества. Каждый из этих шрифтов размещается в отдельном файле. Для использования этих шрифтов необходимо разместить соответствующий файл в рабочем каталоге, в противном случае вызов этого шрифта игнорируется и подключается стандартный шрифт.

Параметр orient задает ориентацию выводимого текста:

Каждый шрифт способен десятикратно изменять свои размеры. Размер шрифта задается параметром size, который может иметь значения от 1 до 10 (точечный или матричный шрифт – в диапазоне от 1 до 32).

Заполнение (закрашивание) произвольной замкнутой фигуры

Процедура FloodFill ( x, y: integer; border: word) заполняет произвольную замкнутую фигуру, используя текущий стиль и цвет заполнения. Координаты точки ( x, y ) указывают, начиная с какой точки будет производиться заливка. Если точка находится внутри замкнутой фигуры, то будет закрашена внутренняя область. Если фигура не замкнута, то заливка разольется по всему экрану. Параметр border указывает цвет граничной линии.

Очистка графического экрана

Процедура ClearDevise очищает графический экран, устанавливает указатель в левый верхний угол.

Сразу вы естественно это не поймёте, нужна практика и еще раз практика иначе не как. Удачи. Спасибо за внимание.

Источник

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

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