С помощью графики в Паскаль можно рисовать фигуры и изображения, визуализировать математические вычисления и использовать элементы графики в компьютерных играх. Мы познакомимся как задавать графический режим в паскаль, рисовать точки, окружности, линии, выводить текст в графическом режиме паскаль.
Для того, чтобы рисовать графические фигуры в Паскаль нужно импортировать модуль GraphABC. В Паскаль это можно сделать с помощью команды uses GraphABC .
Чтобы начать работу с графикой в Pascal нужно задать окно для графики. В модуле GraphABC это можно сделать с помощью команды setWindowSize(x, y) , где x это ширина окна, а y высота.
С помощью модуля GraphABC на Паскале можно отобразить точку, линию, прямоугольник, прямоугольник с закруглёнными краями, окружность, дуга, сектор круга, можно вывести текст на экран.
Чтобы задать расположение объекта в графическом окне Паскаль, нужно указать его координаты в системе координат. Начало координат находится в левом верхнем углу окна для графики.Положительное направление оси X слева направо, оси Y сверху вниз. Чем больше X, тем правее точка, чем больше Y, тем точка ниже.
Как нарисовать домик в PascalABC.NET ?
В Pascal в модуле GraphABC был создан новый тип данных для цвета. Цвет задаётся с помощью строки clЦвет . Чтобы установить цвет рисования графических фигур в паскаль, необходимо использовать команду
Основные цвета в графических программах на паскале
clBlack – черный
clPurple – фиолетовый
clWhite – белый
clMaroon – темно-красный
clRed – красный
clNavy – темно-синий
clGreen – зеленый
clBrown – коричневый
clBlue – синий
clSkyBlue – голубой
clYellow – желтый
clCream – кремовый
clAqua – бирюзовый
clOlive – оливковый
clFuchsia – сиреневый
clTeal – сине-зеленый
clGray – темно-серый
clLime – ярко-зеленый
clMoneyGreen – цвет зеленых денег
clLtGray – светло-серый
clDkGray – темно-серый
clMedGray – серый
clSilver – серебряный
Рисование точки в Паскаль
putPixel(x, y, color) , где x и y это координаты точки, color это цвет точки.
Пример программы в паскаль рисование красной точки
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 координаты второй точки.
Пример программы на паскаль рисование прямоугольника
uses GraphABC;
begin
setWindowSize(500, 500);
rectangle(200, 200, 320, 350);
end.
Для задания в Паскаль прямоугольника с закруглёнными краями используется команда roundRect(x1, y1, x2, y2, w, h) , x1, y1 это координаты первой точки, x2, y2 координаты второй точки, w и h это ширина и высота закругления краёв.
Рисуем в среде программирования Pascal
uses GraphABC;
begin
setWindowSize(500, 500);
roundRect(350, 300, 450, 340, 40, 40);
end.
Рисование окружности в Паскаль
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.
Для рисования эллипса в Паскаль используется команда ellipse(x1, y1, x2, y2), где x и y координаты прямоугольника, ограничивающего эллипс.
uses GraphABC;
begin
setWindowSize(500, 500);
ellipse(100, 100, 150, 200);
end.
Задание дуги и сектора окружности в паскаль схожи. При их задании задаются координаты центра круга, по которому они будут отображаться, радиус этого круга и градусная мера дуги. При задании дуги на экран выводится только сама дуга. В отличии от дуги, при задании сектора отображается не только дуга, но и два отрезка, исходящие из центра окружности, они опираются на дугу.
Дуга рисуется в Паскаль с помощью команды arc(x, y, r, a1, a2) , Сектор в Паскаль рисуется с помощью команды pie(x, y, r, a1, a2) , где x и y это координаты центра окружности, r это радиус окружности, a1 это начальная градусная мера дуги, a2 это конечная градусная мера дуги. Дуги и секторы задаются против часовой стрелки.
Пример программы в паскаль рисование дуги и сектора
uses GraphABC;
begin
setWindowSize(500, 500);
arc(10, 200, 50, 0, 60);
pie(10, 300, 50, 0, 60);
end.
Для вывода текста на экран в графическом режиме Паскаль
используется команда textOut(x, y, s) , где x и y это координаты левой верхней части текста, s это выводящийся текст.
Пример программы на паскаль вывод текста в графическом режиме
uses GraphABC;
begin
setWindowSize(500, 500);
textOut(100, 200, ‘текст’);
end.
Для заливки отображённых объектов в Паскаль используется команда floodFill(x, y, color) , где x и y это координаты точки, находящейся в полости объекта.
Пример программы на паскаль рисование закрашенного прямоугольника
uses GraphABC;
begin
setWindowSize(500, 500);
rectangle(200, 200, 320, 350);
floodFill(250,250, clRed);
end.
В модуле GraphABC в Pascal можно изменять само перо. Для изменения цвета используется setPenColor(color) . Для изменения толщины используется setPenWidth(px) , ширина кисти измеряется в пикселях. Для изменения стиля пера используется команда setPenStyle(x) , в качестве аргумента туда вводится стиль пера, их существует три типа (clSolid, clClear, clDash).
При выведении текста можно изменять его цвет и стиль., для этого есть команда setFontColor(color) и setFontStyle(fsStyle) . Существуют стили fsNormal (обычный), fsBold (полужирный), fsItalic (курсив) и fsUnderline (подчёркивание), можно создавать и их комбинации, например, fsBoldItalicUnderline.
Полезно почитать по теме графика в паскаль
Источник: itrobo.ru
Как нарисовать телевизор на паскале
Помогите с заданием, нужно нарисовать ромб, выделив его диагонали пунктиром + Подписать все его вершины. Нарисовать — то я смог(обычными линими), а вот где прочесть больше информации. Если не сложно, дайте ссылку или помогите в решении.
program abc; uses crt,graphABC; begin write(‘S = (AC · BD) / 2’); writeln(‘S = a · H’); writeln(‘S = a^2 · sin a’); writeln(‘S = 4r^2 / sin a’); SetWindowSize(900,900); line(320,10,440,225); line(440,225,320,460); line(200,225,320,460); line(200,225,320,10); end.
Ещё одно: есть задание, нужно нарисовать такое, используя цикл:
Прошу, если не решить, так дайте ссылку с понятной теорией, а так я всё сделаю.
Спасибо за внимание, с Наступающим)
p.s. не обращайте внимание на
write(‘S = (AC · BD) / 2’); writeln(‘S = a · H’); writeln(‘S = a^2 · sin a’); writeln(‘S = 4r^2 / sin a’);
Это часть задания — вывести формулы нахождения площади.
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,135
Никогда не рисуйте по координатам,посчитанным вручную.
У Вас получился не ромб.
Всегда, если есть возможность, задавайте координаты через параметры.
program abc; uses crt, graphABC; const x = 320; y = 240; rx = 120; ry = 215; a = 10; var h, w: integer; begin write(‘S = (AC · BD) / 2’); writeln(‘S = a · H’); writeln(‘S = a^2 · sin a’); writeln(‘S = 4r^2 / sin a’); SetWindowSize(900, 900); pen.Width := 3; h := textheight(‘A’) div 2; w := textwidth(‘A’) div 2; TextOut(x — rx — a — w, y — h, ‘A’); TextOut(x — w, y — ry — a — h, ‘B’); TextOut(x + rx + a — w, y — h, ‘C’); TextOut(x — w, y + ry + a — h, ‘D’); moveto(x, y — ry); lineto(x + rx, y); lineto(x, y + ry); lineto(x — rx, y); lineto(x, y — ry); pen.Style := psDash; line(x, y — ry, x, y + ry); line(x — rx, y, x + rx, y); end.
В Pascal ABC есть встроенная справка, где можно все найти.
Кстати, уточните, в каком Паскале работаете.
Код выше работает в Pascal ABC NET и не работает в Pascal ABC.
Пишите язык программирования — это форум программистов , а не экстрасенсов. (<= это подпись )
Последний раз редактировалось BDA; 30.12.2012 в 15:49 .
Пользователь
Регистрация: 29.11.2012
Сообщений: 33
хмм
у меня просто АВС, и, как вы говорите, не работает. Неизвестный идентификатор pen
/// с помощью справки исправил ошибку с пен, сейчас выбивает на penStyle:=psDash;
присвоение имени функции вне тела этой функции
Последний раз редактировалось Falcao; 30.12.2012 в 20:32 .
Регистрация: 09.01.2008
Сообщений: 26,238
для обычного Pascal ABC достаточно было заменить 2 строчки работы с пером (кстати, я за пару минут прочитал это во встроенном хелпе Паскаля ABC по F1)
program abcromb; < (c) BDA >uses crt, graphABC; const x = 320; y = 240; rx = 120; ry = 215; a = 10; var h, w: integer; begin write(‘S = (AC · BD) / 2’); writeln(‘S = a · H’); writeln(‘S = a^2 · sin a’); writeln(‘S = 4r^2 / sin a’); SetWindowSize(900, 900); SetPenWidth( 3 ); h := textheight(‘A’) div 2; w := textwidth(‘A’) div 2; TextOut(x — rx — a — w, y — h, ‘A’); TextOut(x — w, y — ry — a — h, ‘B’); TextOut(x + rx + a — w, y — h, ‘C’); TextOut(x — w, y + ry + a — h, ‘D’); moveto(x, y — ry); lineto(x + rx, y); lineto(x, y + ry); lineto(x — rx, y); lineto(x, y — ry); SetPenStyle ( psDash ); SetPenWidth( 1 ); line(x, y — ry, x, y + ry); line(x — rx, y, x + rx, y); end.
Последний раз редактировалось Serge_Bliznykov; 30.12.2012 в 22:51 .
Источник: www.programmersforum.ru
Работа с графикой в PascalABC
После запуска PascalABC, по умолчанию, запускается текстовый режим. Для работы с графикой служит отдельное графическое окно.
Чтобы его открыть, необходимо подключить модуль GraphABC. В этом модуле содержится набор процедур и функций, предназначенных для работы с графическим экраном, а также некоторые встроенные константы и переменные, которые могут быть использованы в программах с графикой.
С их помощью можно создавать разнообразные графические изображения и сопровождать их текстовыми надписями.
Подключение осуществляется в разделе описаний.
Формат подключения модуля GraphABC:Uses GraphABC;
Графический экран PascalABC (по умолчанию) содержит 640 точек по горизонтали и 400 точек по вертикали. Начало отсчета – левый верхний угол экрана. Ось x направлена вправо, а ось y –вниз. Координаты исчисляются в пикселях.
Все команды библиотеки GraphABC являются подпрограммами и описаны в виде процедур и функций. Для того, что бы команда выполнилась необходимо указать команду и задать значения параметров.
Управление графическим окном
После запуска 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.
Программа, рисующая фигурку:
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 заменим на относительное. Например, для стены дома процедура для рисования запишется следующим образом:
Сформулируем условие выполнения цыклических действий для нашей задачи.Какие координаты имеет левый верхний угол пятого дома? Конечное значение выбранного нами параметра цикла x = 700. Тогда условие выполнения цикла записывается так: x
Словесное описание алгоритма коротко можно записать так:
Программа будет иметь вид:
Program Domik; uses GraphABC; var i: integer; st:string; x:integer; begin SetWindowSize(800, 500); x:=100; While x 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.
Источник: gospodaretsva.com