- Графика в Паскаль
- Графика в Паскаль
- Основные цвета в графических программах на паскале
- Рисование точки в Паскаль
- Рисование линии в Паскаль
- Рисование прямоугольника в Паскаль
- Рисование окружности в Паскаль
- Для вывода текста на экран в графическом режиме Паскаль
- Линии в Pascal: Line, LineTo, MoveTo
- Кривая линия Curve
Графика в Паскаль
Графика в Паскаль
С помощью графики в Паскаль можно рисовать фигуры и изображения, визуализировать математические вычисления и использовать элементы графики в компьютерных играх. Мы познакомимся как задавать графический режим в паскаль, рисовать точки, окружности, линии, выводить текст в графическом режиме паскаль.
Для того, чтобы рисовать графические фигуры в Паскаль нужно импортировать модуль GraphABC. В Паскаль это можно сделать с помощью команды uses GraphABC .
Чтобы начать работу с графикой в Pascal нужно задать окно для графики. В модуле GraphABC это можно сделать с помощью команды setWindowSize(x, y) , где x это ширина окна, а y высота.
С помощью модуля GraphABC на Паскале можно отобразить точку, линию, прямоугольник, прямоугольник с закруглёнными краями, окружность, дуга, сектор круга, можно вывести текст на экран.
Чтобы задать расположение объекта в графическом окне Паскаль, нужно указать его координаты в системе координат. Начало координат находится в левом верхнем углу окна для графики.Положительное направление оси X слева направо, оси Y сверху вниз. Чем больше X, тем правее точка, чем больше Y, тем точка ниже.
В 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 это ширина и высота закругления краёв.
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.
Полезно почитать по теме графика в паскаль
Источник
Линии в Pascal: Line, LineTo, MoveTo
На предыдущих страницах мы говорили об точках в Паскале: изучили процедуры GetPixel (определить цвет данного пикселя) и PutPixel, SetPixel (задать данному пикселю определенный цвет – там мы строили линии и не только с помощью точек). Здесь рассмотрим одни из наиболее важных процедур в графике Паскаля – построение линий Line, LineTo и вспомогательная для последней MoveTo.
Так чем же отличаются Line и LineTo, и зачем нужна загадочная MoveTo?
✎ Line(x1, y1, x2, y2) — Эта процедура соединяет отрезком точки (x1, y1) и (x2, y2).
Теперь немного разукрасим отрезок и увеличим его толщину, так как в предыдущем примере по умолчанию цвет черный, а толщина линии 1 пиксель:
Ниже представлены примеры программ случайных появляющихся отрезков в PascalABC.Net и Turbo Pascal/Free Pascal:
✎ Line(x1, y1, x2, y2, C) – Проводит отрезок от точки (x1, y1) до точки (x2, y2), закрашивая отрезок цветом C. Есть только в PascalABC.Net. Толщина линии при этом равна 1 пиксель и её изменить нельзя.
✎ MoveTo(x, y) – Устанавливает начальную точку (позицию) рисования в (x, y). Если эту процедуру не задействовать, то начальная точка по умолчанию принимается за (0, 0) – левый верхний угол окна. Процедура MoveTo используется совместно с LineTo (см. ниже).
✎ LineTo(x, y) – Рисует отрезок от точки, в которой на данный момент находится конец отрезка (текущая позиция), до точки (x, y); начальная позиция задается с помощью MoveTo (см. выше), а новая позиция переходит в точку (x, y). Данная процедура задействуется при построении последовательной цепочки линий (отрезков) – когда конец каждой линии является одновременно началом следующей.
А как нарисовать звезду в паскале? Ниже представлен пример программы для рисования звезды в PascalABC.Net с указанным количеством концов. Все комментарии с в коде:
Результат выполнения программы представлен на рисунке:
Результат выполнения программы представлен на рисунке:
✎ LineTo(x, y, C) — Рисует отрезок от точки, в которой на данный момент находится конец отрезка (текущая позиция), до точки (x, y) цветом C. Начальная позиция задается с помощью MoveTo, а новая позиция переходит в точку (x, y). Толщина линии при этом равна 1 пиксель.
LineTo(x, y) действует следующим образом. Пусть необходимо построить ломаную с вершинами в 10 точках (x0, y0), (x1, y1), (x2, y2), . (x9, y9). Для этого, естественно, можно использовать описанную выше процедуру Line(. ) и построить следующую последовательность линий:
1) Line(x0, y0, x1, y1) ; 2) Line(x1, y1, x2, y2) ; 3) Line(x2, y2, x3, y3) ; . ; 9) Line(x8, y8, x9, y9) .
Но в таком случае точки (x1, y1), (x2, y2), . (x8, y8) будут строится два раза – в конце предыдущего и начале следующего отрезков. Здесь можно проще поступить: процедурой MoveTo(x0, y0) задаем начальную точку ломаной линии, а после 9 раз используем процедуру LineTo:
1) LineTo(x1, y1) ; 2) LineTo(x2, y2) ; 3) LineTo(x3, y3) ; . 9) LineTo(x9, y9) .
И проще выглядит и результат тот же. Наиболее частое использование процедуры LineTo — при построении графиков фукнций, особенно, если точек построения мало.
На этом все о линиях в паскале. А пока, если вам понадобится длительное хранение зерна, то вам не обойтись без сушильного шкафа от экан — он сохраненяет питательные вещества и соответствует стандарту ГОСТ.
Источник
Кривая линия Curve
На предыдущих страницах мы научились соединять две точки отрезком, а также строить ломаные линии и замкнутые ломаные. Мы даже умеем заполнить цветом замкнутую ломаную, используя процедуру Polygon или FillPolygon. Но там ничего не говорилось о том, как нарисовать кривую линию в паскале. Ведь надо же иногда нарисовать кривую как бы от руки, не используя отрезков. В PascalABC.Net кривую линию можно нарисовать с помощью встроенной в графический модуль подпрограммы Curve.
✎ procedure Curve(points: array of Point);
— Рисует кривую по точкам, координаты которых заданы в массиве points
Как видно из определения, Curve – это процедура, в которую нужно передать параметр – массив точек points. Для рисования кривой с помощью процедуры Curve нужно выдержать последовательность действий:
1) задать количество точек n (n ≥ 2), через которые будет проходить кривая. Нужно помнить о том, что при n=2 мы получим отрезок прямой;
2) задать размер массива точек points равным n. Длина (размер) массива устанавливается с помощью процедуры SetLength(points,n) ;
3) задать координаты n точек массива: points.X – возвращает координату X, points.Y – возвращает координату Y точки. Также не забываем, что points – это динамический массив, а в динамических массивах нумерация начинается с 0;
4) вызвать процедуру Curve(points) , которая проведет кривую через n точек.
Давайте продемонстрируем вышесказанное на примере. Возьмем 3 точки, через которые проведем кривую, предварительно задав произвольные координаты. Массив, в котором будут хранится координаты, позначим А; тогда длина массива будет задаваться с помощью процедуры SetLength(A,3) . Первая точка будет иметь номер 0, вторая – 1, третья – 2 (А – динамический массив, нумерация ведется с 0). Все комментарии в коде программы:
Мы получили линию похожую на параболу, но это не парабола. Это видно из того, что её стороны немного загнуты в стороны. Но где находятся точки, через которые проведена наша кривая? Чтобы это увидеть, давайте в процессе построения предыдущего кода программы подпишем каждую точку номерами соотвественно 0, 1 и 2, поставив возле каждой из них маленькие кружечки.
Для рисования кругов используем процедуру Circle(x,y) , а для надписи в графическом окне – TextOut(x,y,s) , где x,y – координаты точки, s – строка для вывода. Вот что у нас получилось:
Для разнообразия цвет кривой изменен с зеленого на синий (строка 18 кода). На рисунке видно, как кривая Curve плавно проходит по точкам 0, 1 и 2, огибая их.
Хотелось бы ещё заметить, что в строке 33 для области вывода текста мы задали прозрачный цвет с помощью SetBrushColor(clTransparent) . Но что такое область вывода текста? Это прямоугольник, в который выводится текст. Чем больше размер шрифта ( FontSize ), тем больший прямоугольник. И если нужно вывести текст на какой-то фигуре или рисунке так, чтобы он не закрывал собой рисунок, то для заливки кистью для текста нужно использовать прозрачный цвет clTransparent . Впрочем, измените этот цвет на clYellow (жёлтый), clRed (красный), clGreen (зеленый) или другой, и вы всё поймете сами.
Но что такое всего три точки? Давайте нарисуем кривую линию с помощью Curve, используя больше узловых точек. Для этого сгенерируем случайные координаты X и Y, вычисляя их не последовательно, как выше, а в цикле. Координаты возьмем такие, чтобы не выходить за пределы графического окна GraphABC.Net. Количество узловых точек возьмем тоже случайное, а в конце программы выведем на экран сообщение об этом количестве.
А теперь давайте покажем эти точки, через которые проходит кривая, так, как во втором коде выше. Подписывать точки номерами не будем, а просто обозначим кружечками. Смотрим, что получилось.
Зачем всё это нужно, процедура Curve? Например, если надо нарисовать простенький горизонт, или изобразить воду (которая не бывает идеально прямая), то можно просто обозначить несколько точек, чуть отклюняющихся от прямых, и провести через них кривую Curve – получим иммитацию кривой поверхности. Это мы ещё не раз продемонстрируем на примерах. На этом пока всё, не забывайте комментировать и спрашивать. Если нужно что-либо добавить, добавлю.
Источник