Каждый пиксель (точка) имеет две координаты: х и уГеометрические размеры пикселя определяются разрешением монитора.
- Главная
- Информатика
- Графика в ABC Паскале
Pascal. Работа с графикой (Ellipse, rectangle, circle, textout)
Слайды презентации
Слайд 1 Графические возможности языка программирования
Строим график в PascalABC
Слайд 2 Каждый пиксель (точка) имеет две координаты: х и
у
Геометрические размеры пикселя определяются разрешением монитора.
Слайд 3 Пример 1. Демонстрация подключения модуля GraphAbc
program tochka;
uses
graphabc;
begin
setwindowsize(640,480);
окна>
setpixel(100,120,clBlack); пера и рисует точку с координатами (100,120)>
end.
В данном примере мы познакомились с использованием команды setpixel в частном случае. В общем виде эта команда выглядит так:
setpixel(x:integer,y:integer,c:color) – рисует точку с координатами (х,у) цветом с.
clBlack – черный clPurple – фиолетовый clWhite – белый clRed – красный clGreen – зеленый clBrown – коричневый clBlue – синий clSkyBlue – голубой clYellow – желтый
Слайд 4 Программа рисования отрезка, соединяющего две точки с координатами
(120,150) и (150,80) красным цветом пера, может выглядеть так:
Пример
2. Демонстрация рисования линии
program Linii;
uses graphabc;
begin
setwindowsize(640,480);
setpencolor(clred);
line(120,150,300,100);
end.
Слайд 5
Пример 3. Демонстрация рисования линий разным цветом пера
program
treugolnik;
uses graphabc;
begin
setwindowsize(640,480);
setpenwidth(5);
Слайд 6 Важно помнить:
1. Рисуя линии, можно задавать ее размер
1. Рисуя линии, можно задавать ее размер
(координатами ее концов), цвет, ширину (толщину) и стиль.
2.
Для задания стиля линии в модуле GraphAbc существует процедура SetPenStyle (Style), где Style — константы стилей пера (см. Приложение к главе 3).
3. Линия может быть сплошной, пунктирной, штрихпунктирной, штриховой.
Замкнутые фигуры можно закрашивать.
Слайд 7 Пример 4. Демонстрация рисования замкнутых фигур с помощью
линий и их закрашивание
Program treug_zakrash;
uses graphabc;
begin
setwindowsize(640,480);
clearwindow(clWhite);
Слайд 8 В результате выполнения программы на экране монитора в
графическом окне появится треугольник, нарисованный зеленым и закрашенный красным
Важно помнить:
1. Закрашивать можно только замкнутые фигуры, контур которых нарисован одним цветом.
2. В процедуре заливки floodfill(х,у,c) указывается координата точки (х,у), которая обязательно должна попасть во внутреннюю область закрашиваемой фигуры.
Слайд 9 Прямоугольники и окружности можно рисовать с помощью команд
rectangle(x1,y1,x2,y2) и circle(x,y,r) соответственно. Как это можно сделать, рассмотрим
на примере программы, которая рисует прямоугольник и окружность.
Пример 5. Демонстрация рисования прямоугольника и окружности
program gemetry;
uses graphabc;
begin
setwindowsize(640,480);
setpencolor(clBlue); для рисования контура прямоугольника>
setpenwidth(6);
rectangle(50,50,250,150); координатами противоположных вершин>
setpencolor(clred); для рисования контура окружности>
circle(350,100,60); с координатами (350,100) и радиусом 60>
end.
Слайд 10 Демонстрация закрашивания прямоугольника и окружности и их надписи
program
gemetry3;
uses graphabc;
begin
setwindowsize(640,480);
clearwindow(clYellow);
setpencolor(clteal);
Слайд 11 Графические процедуры АВС Паскаля:
1. SetPixel(x,y,color: integer); — закрашивает
один пиксель с координатами (x,y) цветом color.
2. Line(x1,y1,x2,y2: integer);
— рисует отрезок от точки (x1,y1) и до точки (x2,y2).
3. Circle(x,y,r: integer); — рисует окружность с центром в точке (x,y) и радиусом r.
4. Rectangle(x1,y1,x2,y2: integer); -рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
5. TextOut(x,y: integer; s: string); — выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s).
6. FloodFill(x,y,color: integer); — заливает область одного цвета цветом color, начиная с точки (x,y).
7. FillRect(x1,y1,x2,y2: integer); — заливает прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2), цветом текущей кисти.
Слайд 12 Что будет выведено на экран монитора в результате
выполнения данных программ?
program grafika1;
uses graphabc;
begin
setpenwidth(10);
setpencolor(clred);
Line(100,100,270,90);
End.
grafika2;
uses graphabc;
begin
setpenwidth(8);
setpencolor(clblue);
circle (200,150,50);
End.
Слайд 13 Перепишите в тетрадь:
Тема: Графические возможности языка программирования.
1. Line(x1,y1,x2,y2;
— отрезок от (x1,y1) до (x2,y2).
2. Circle(x, y, r);
— окружность с центром в (x, y) и радиусом r.
3. Rectangle(x1,y1,x2,y2); — прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
4. FloodFill(x, y, color); — заливает область одного цвета цветом color, начиная с точки (x, y).
Источник: findtheslide.com
Как рисовать в Паскале АВС — команды, алгоритмы и примеры
Графика в Паскале не так важна, ведь этот язык обычно используется для написания функциональных приложений. Тем не менее при обучении будет интересно узнать, как рисовать в Паскале. Это особенно важно для школьников старших классов и студентов первых курсов некоторых направлений, ведь многим ученикам проще освоиться в программировании, когда их код управляет операциями, видными визуально.
Изучение графики
Этот язык программирования не очень удобен для создания графических приложений. Есть множество более удобных альтернатив, особенно в плане быстродействия кода. Однако большинство школьников, как и некоторые студенты, начинают изучать программирование именно с Паскаля, а с приближением экзаменов всё больше времени тратится на подготовку, из-за чего изучать сторонний материал не всегда уместно. Научиться работать с графическим интерфейсом будет полезно по таким причинам:
- Легче запомнить синтаксис языка со всеми обозначениями.
- Новый опыт разработки.
- Изучение графических функций в Паскале ABC.
- Визуальное восприятия кода.
- Некоторым такая задача кажется более интересной.
К тому же освоившись с примерами элементарной графики, у многих возникает желание написать игру или приложение для онлайн-рисования. Такая программа будет очень простой, но из-за постоянного обновления функционала начинающий программист будет узнавать о новых возможностях языка. Кому-то это покажется пустой тратой времени, но работа над проектом — на самом деле лучший способ обучения. Особенно хорошо метод работает, когда ученик сам заинтересован в получении какого-либо информационного продукта, а не получает указание от преподавателя.
Замена графики
Чтобы пользоваться минимальными графическими возможностями, достаточно подключить модуль CRT, который отображает отдельное окно консоли на экране. Без его использования код выводится в соответствующем поле интерпретатора, а также недоступны многие полезные команды Pascal ABC.
В таком режиме можно пользоваться псевдографикой — интерфейсом, построенным из различных символов:
- звёздочка;
- точка;
- тире;
- подчёркивание;
- скобки всех разновидностей;
- кавычки;
- решётка;
- восклицательный и вопросительный знаки;
- прямой и обратный слэш;
- двоеточие;
- точка с запятой;
- тильда;
- собака;
- знак доллара.
Так как по умолчанию шрифт консоли таков, что все знаки занимают одинаковую ширину, можно включать любые символы, которые будут достаточно контрастны. Есть несколько вариантов реализации, которые отличаются по сложности кода.
Упрощённый способ
Новичкам лучше начинать с самого простого варианта. Такой код будет плохо оптимизирован, но его проще всего написать. Выполняется это в несколько простых шагов:
Ещё один важный момент — необходимость задержки для корректного отображения анимации. Проще всего сделать это, поместив процедуру delay () между окончанием внутреннего цикла и командой очистки экрана. Внутрь этой команде передаётся время задержки в миллисекундах. Если это время должно как-то меняться, то следует выделить для этого отдельную переменную, а также прописать алгоритм изменения.
Это самый лёгкий способ. Его удобно реализовать, на это тратится мало времени, единственная трудность — ручное построение рисунков текстом (при написании программы). А также такой код не всегда будет работать плавно, ведь слишком частая очистка и наполнение консоли заметна визуально из-за мерцания.
Оптимизированный метод
Этот вариант несколько сложнее в реализации, ибо для него не хватит одиночного вложенного цикла. С другой стороны, этот метод не требует обязательной предварительной отрисовки всех изображений. Чтобы адаптироваться к такой технологии, лучше начать с простых фигур:
- квадрат;
- треугольник;
- прямоугольник;
- трапеция;
- окружность.
Для каждой из вариаций лучше прописывать отдельную функцию. Принцип заключается в том, что если курсор стоит на пространстве консоли, занятом другим символом, то старый знак заменится новым при выводе этого символа. Эта реализация требует использования функции setcursorpos (x, y), где x и y — это координаты установки курсора по ширине и высоте соответственно, отсчёт начинается с левого верхнего угла.
Если на экране ещё нет изображения, то этот оператор используется для точечной отрисовки фигур. При этом важно использовать write, а не writeln, чтобы курсор не переходил на новую строку — в этом нет необходимости. Если рисунок уже есть, то ненужные фрагменты можно просто заменить необходимыми знаками, либо стереть вовсе, введя символ пробела. Функции следует отводить не под целые фигуры, а под составляющие их линии и окружности.
Алгоритм линейного рисования довольно прост. При самой практичной реализации функция принимает лишь координаты двух точек, а также выводимый символ. Затем она вычисляет разницу по ширине и высоте — это необходимо, чтобы строить линии под углом, отличным от 0, 45 и 90. После каждого выполнения цикла печатается по одному знаку, а курсор смещается в новую точку.
Смещение рассчитывается при помощи уравнения прямой, которое составляется исходя из разницы по «иксу» и «игрику». Для окружности соответственно применяется уравнение окружности, а принцип остаётся прежним.
Дополнительный вариант
Этот вариант не исключает использования прошлых методик, но больше подходит для оптимизированной реализации. Модуль crt предусматривает заполнение фона консоли различным цветом. Это распространяется не только на заливку всего окна, но также актуально для каждого пространства под символ.
Таким образом, можно нарисовать любую необходимую фигуру или изображение. Единственное отличие от прошлых двух методов — заполнение осуществляется при помощи связки трёх, а не двух команд. Сначала надо установить курсор консоли в требуемое положение, а после этого функцией textbackground (x), где x — это цвет, заданный числом от 0 до 15 или текстовой константой.
Можно как печатать пробел, так и любой другой знак. Этот символ возможно также окрасить процедурой textcolor, которая определяет цвет по аналогичному входящему параметру. Ориентироваться по номерам легче, когда открыта таблица цвета в Паскале abc.
Графический модуль
Если воспользоваться специализированным модулем, то будет возможно создавать пиксельные изображения любой сложности. В Пакале АБС он называется GraphABC, входит в список стандартных и подключается аналогично другим.
Предварительная подготовка
Написание программы следует начать с настройки используемого окна. Для этого можно воспользоваться некоторыми из этих процедур:
- SetWindowWidth. Устанавливает ширину, равную полученному параметру.
- SetWindowHeight. Выполняет аналогичные действия для высоты.
- SetWindowIsFixedSize. Принимает переменную логического типа, в случае значения True запрещает пользователю менять параметры ширины и высоты при использовании программы.
- ClearWindow. Заливает окно белым, очищая экран.
- Clear. Выполняет аналогичные действия, но может закрасить выбранным цветом.
- Minimize. Сворачивает приложение.
- Maximize. Разворачивает окно на весь экран.
- Normalize. Приводит окно в положение, актуальное до сворачивания. Восстанавливаются такие параметры, как расположение и размеры.
Когда необходимые настройки прописаны, можно приступить к следующему шагу. Если приложение не предполагает, что шрифт будет меняться, его следует также изменить на первых строках кода. Установить цвет и стиль возможно командами SetFontColor и SetFontStyle соответственно. В некоторых случаях могут пригодиться функции FontColor и FontStyle, которые возвращают используемые значения цвета и стиля.
А также важно заранее научиться работать с цветом в Паскале ABC. Будет полезно знать про:
- RGB. Возвращает значения компонентов из названия.
- ARGB. Работает аналогично RGB, но дополнительно выводит параметр прозрачности.
- clRandom. Позволяет получить заранее неизвестный цвет.
- GetRed. Оценивает красную составляющую переданного цвета.
- GetGreen. Выводит зелёный из полученной переменной.
- GetBlue. Возвращает значение синего.
Эти функции очень практичны, ведь в модуле GraphABC цвет задаётся в формате RGB. А также, в сравнении с методами псевдографики, роль курсора играет кисть, поэтому необходимо уметь изменять её параметры. Существуют SetPenColor, SetPenStyle и SetPenWidth — для установки цвета, стиля и толщины.
Для контроля этих значений можно включать в код PenColor, PenWidth, PenStyle. Координаты отслеживаются с помощью PenX и PenY.
Основные процедуры
Этот модуль предоставляет большое количество функций для рисования примитивов наподобие линий, ломаных, текста, а также окружностей и прямоугольников с последующей заливкой. Самая универсальная команда — PutPixel. Она размещает пиксель выбранного цвета в указанной координате. При помощи этой функции можно нарисовать любое изображение, но гораздо удобнее воспользоваться встроенными процедурами:
- Line. Использует текущий цвет, проводит линию между двумя точками.
- FillCircle. Рисует круг по полученным координатам центра и длине радиуса.
- DrawCircle. Выводит окружность без заполнения.
- DrawEllipse. Выводит контур эллипса, ограниченного прямоугольником с указанными координатами вершин.
- FillEllipse. Рисует также эллипс, но с заливкой.
- DrawRectangle или FillRectangle. Работает с прямоугольником, рисует или заливает его соответственно.
- Arc. Необходим для рисования дуги окружности. Принимает пять параметров, включая координаты центра, радиус и угол поворота ограничивающих лучей.
- DrawPie и FillPie. Работает аналогично Arc, требует тех же переменных на входе, но рисует сектор окружности или его контур.
- TextOut. Выводит текст в прямоугольнике по координатам (значениям x и y соответствует левый верхний угол).
- DrawTextCentered. Похожа на TextOut, но текст размещается по центру.
- FloodFill. Заливка всей однотонной области, на которую указывает точка.
- LineTo. Может принимать как два, так и три параметра. По умолчанию проводит линию от положения кисти до заданной координаты текущим цветом, при дополнении — указанным.
- MoveTo. Ставит кисть на нужное место.
Также может потребоваться GetPixel. Эта функция вернёт цвет пикселя, на который указывает кисть.
Информатика СУБД (система управления базами данных) — виды, классификация и назначение систем в экономике
Источник: sprint-olympic.ru
Презентация на тему: Графика в ABC Паскале
№ слайда 1
Описание слайда:
Графические возможности языка программирования
№ слайда 2
Описание слайда:
Каждый пиксель (точка) имеет две координаты: х и у Геометрические размеры пикселя определяются разрешением монитора.
№ слайда 3
Описание слайда:
Пример 1. Демонстрация подключения модуля GraphAbc program tochka; uses graphabc; begin setwindowsize(640,480); setpixel(100,120,clBlack); end. В данном примере мы познакомились с использованием команды setpixel в частном случае. В общем виде эта команда выглядит так: setpixel(x:integer,y:integer,c:color) – рисует точку с координатами (х,у) цветом с. clBlack – черный clPurple – фиолетовый clWhite – белый clRed – красный clGreen – зеленый clBrown – коричневый clBlue – синий clSkyBlue – голубой clYellow – желтый
№ слайда 4
Описание слайда:
Программа рисования отрезка, соединяющего две точки с координатами (120,150) и (150,80) красным цветом пера, может выглядеть так: Пример 2. Демонстрация рисования линии program Linii; uses graphabc; begin setwindowsize(640,480); setpencolor(clred); line(120,150,300,100); end.
№ слайда 5
Описание слайда:
№ слайда 6
Описание слайда:
Важно помнить: 1. Рисуя линии, можно задавать ее размер (координатами ее концов), цвет, ширину (толщину) и стиль. 2. Для задания стиля линии в модуле GraphAbc существует процедура SetPenStyle (Style), где Style — константы стилей пера (см. Приложение к главе 3). 3. Линия может быть сплошной, пунктирной, штрихпунктирной, штриховой. Замкнутые фигуры можно закрашивать.
№ слайда 7
Описание слайда:
Пример 4. Демонстрация рисования замкнутых фигур с помощью линий и их закрашивание Program treug_zakrash; uses graphabc; begin setwindowsize(640,480); clearwindow(clWhite); setpenwidth(3); setpenstyle(pssolid); setpencolor(clgreen); line(100,200,170,70); line(170,70,250,200); line(250,200,100,200); floodfill(440,120,clred); end.
№ слайда 8
Описание слайда:
В результате выполнения программы на экране монитора в графическом окне появится треугольник, нарисованный зеленым и закрашенный красным цветом Важно помнить: 1. Закрашивать можно только замкнутые фигуры, контур которых нарисован одним цветом. 2. В процедуре заливки floodfill(х,у,c) указывается координата точки (х,у), которая обязательно должна попасть во внутреннюю область закрашиваемой фигуры.
№ слайда 9
Описание слайда:
Прямоугольники и окружности можно рисовать с помощью команд rectangle(x1,y1,x2,y2) и circle(x,y,r) соответственно. Как это можно сделать, рассмотрим на примере программы, которая рисует прямоугольник и окружность. Пример 5. Демонстрация рисования прямоугольника и окружности program gemetry; uses graphabc; begin setwindowsize(640,480); setpencolor(clBlue); setpenwidth(6); rectangle(50,50,250,150); setpencolor(clred); circle(350,100,60); end.
№ слайда 10
Описание слайда:
№ слайда 11
Описание слайда:
Графические процедуры АВС Паскаля: 1. SetPixel(x,y,color: integer); — закрашивает один пиксель с координатами (x,y) цветом color. 2. Line(x1,y1,x2,y2: integer); — рисует отрезок от точки (x1,y1) и до точки (x2,y2). 3. Circle(x,y,r: integer); — рисует окружность с центром в точке (x,y) и радиусом r. 4. Rectangle(x1,y1,x2,y2: integer); -рисует прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2).
5. TextOut(x,y: integer; s: string); — выводит строку s в позицию (x,y) (точка (x,y) задает верхний левый угол прямоугольника, который будет содержать текст из строки s). 6. FloodFill(x,y,color: integer); — заливает область одного цвета цветом color, начиная с точки (x,y). 7. FillRect(x1,y1,x2,y2: integer); — заливает прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2), цветом текущей кисти.
№ слайда 12
Описание слайда:
Что будет выведено на экран монитора в результате выполнения данных программ? program grafika1; uses graphabc; begin setpenwidth(10); setpencolor(clred); Line(100,100,270,90); End. Рrogram grafika2; uses graphabc; begin setpenwidth(8); setpencolor(clblue); circle (200,150,50); End.
№ слайда 13
Описание слайда:
Перепишите в тетрадь: Тема: Графические возможности языка программирования. 1. Line(x1,y1,x2,y2; — отрезок от (x1,y1) до (x2,y2). 2. Circle(x, y, r); — окружность с центром в (x, y) и радиусом r. 3. Rectangle(x1,y1,x2,y2); — прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2). 4. FloodFill(x, y, color); — заливает область одного цвета цветом color, начиная с точки (x, y).
Источник: ppt4web.ru