Как написать программу в паскале для рисования

Turbo Pascal работает в 2 режимах. Текстовый и графический.
При работе в текстовом режиме экран разбивается на строки, а строки на позиции, в каждую из которых можно поместить только один символ.

При работе в графическом режиме экран разбивается на отдельные точки — «пикселы». Положение пиксела также задается двумя координатами — X и Y. Координата X увеличивается слева направо, а координата Y — сверху вниз. Количество пикселов на экране зависит от типа графического адаптера и для распространённого адаптера VGA составляет 640 х 480

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

Uses
Graph, CRT;
Var
grDriver,grMode,res:integer;
Begin
grDriver:=detect;
init Graph (grDriver,’путь к файлу BGI’);

Рисование в Pascal ABC (размеры окна, основные фигуры, заливка, текст, толщина и цвет линий)


Операторы графических изображений
Close graph;
End.

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

Константы цвета

Black = 0
Blue = 1
Green = 2
Cyan = 3
Red = 4
Magneta = 5
Brown = 6
LightGray = 7

DarkGray = 8
LightBlue = 9
LightGreen = 10
LightCyan = 11
LightRed = 12
LightMagneta = 13
Yellow = 14
White = 15

Константы типов и толщины линий

SolidLn = 0
DottedLn = 1
CenterLn = 2
DashedLn = 3
NormWidth = 1
ThickWidrth = 3

Константы шаблона штриховки

EmtyFill = 0
solidFill = 1
LineFill = 2
LtSlashFill = 3
SlashFill = 4
BkSlashFill = 5
LtBkSlashFill = 6
HatchFill = 7
XHatchFill = 8
InterLeaveFill = 9
WideDotFill = 10
CloseDotFill = 11
UserFill = 12

Arc(X,Y:integer; U1,U2,R: Word) Строит дугу окружности текущим цветом с текущими праметрами линии. X, Y — координаты центра дуги, U1 — угол до начальной точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленной слева направо, U2 — угол до конечной точки дуги, отсчитываемый так же, как U1, R — радиус дуги.

Bar(X1,Y1,X2,Y2:integer)
Строит прямоугольник, закрашенный текущим цветом с использованием текущего стиля (орнамента, штриховки). X1, Y1, X2, X2 — координаты левого верхнего и правого нижнего углов прямоугольника.

Pascal Урок 11. Простое приложение Windows Forms



Bar3D(X1,Y1,X2,Y2:integer;Glubina:word;Top:boolean)
Строит параллелепипед, используя текущий стиль и цвет. X1, Y1, X2, X2 — координаты левого верхнего и правого нижнего углов передней грани; Glubina — ширина боковой грани (отсчитывая по горизонтали), Top — признак включения верхней грани (Если True — верхняя грань вычерчивается, False — не вычерчивается).

Circle(X,Y:integer;R:word)
Рисует текущем цветом окружность радиуса R с центром в точке (X,Y).

ClearDevice
Очищает графический экран, закрашивает его в цвет фона.

ClearViewPort
очищает выделенное графическое окно, закрашивает его в цвет фона.

CloseGraph
Закрывает графический режим, т.е. освобождает память, распределенную под драйверы графики и файлы шрифтов, и восстанавливает текстовый режим работы экрана.

Ellipse(X,Y:ineger; U1,U2,XR,YR:word)
Рисует дугу эллипса текущим цветом; X, Y — координаты центра эллипса; U1, U2 — углы до начальной и конечной точек дуги эллипса (см. процедуру Arc); XR, YR — горизонтальная и вертикальная полосы эллипса.

FillEllipse(X,Y:ineger; XR,YR:word)
Рисует заштрихованный эллипс, используя X,Y как центр и XR, YR как горизонтальную и вертикальную полосы эллипса.

FillPoly(N:word;Vwr PolyPoints)
Рисует и штрихует многоугольник, содержащий N вершин с координатами в PolyPoints.

InitGraph(Var Driver, Mode:integer;Path:String)
Организует переход в графический режим. Переменные Driver и Mode содержат тип графического драйвера и его режим работы. Третий параметр определяет маршрут поиска графического драйвера. Если строка пустая (т.е. равна »), считается что драйвер находится в текущем каталоге.

Line(X1,Y1,X2,Y2:Integer)
Рисует линию от точки X1,Y1 до точки X2,Y2.

LineTo(X,Y:Integer)
Рисует линию от текущего указателя к точке X1,Y1.

MoveTo(X,Y:Integer)
Смещает текущий указатель к точке X, Y.

OutTextXY(X,Y:Integer;TextString:String)
Выводит текст в заданное место экрана

PieSlice(X,Y:Integer;U1,U2,Radius:Word)
Строит сектор круга, закрашенный текущей штриховкой и цветом заполнения. X,Y — координаты центра сектора круга; U1 и U2 — начальный и конечный углы сектора, отсчитываемые против часовой стрелки от горизонтальной оси, направленной вправо; Radius — радиус сектора.

PutPixel(X,Y:Integer;Color:Word)
Выводит точку цветом Color с координатами X,Y.

Rectangle(X1,Y1,X2,Y2)
Рисует контур прямоугольника, используя текущий цвет и тип линии. X1,Y1 — координаты левого верхнего угла прямоугольника, X2,Y2 — координаты правого нижнего угла прямоугольника.

Sector(X,Y:Integer; U1,U2,XR,YR:word)
Рисует и штрихует сектор эллипса радиусами XR и YR с центром в X,Y от начального угла U1 к конечному углу U2.

SetBkColor(Color:Word)
Устанавливает цвет фона.

SetColor(Color:Word)
Устанавливает основной цвет, которым будет осуществляться рисование.

SetFillStyle(Pattern,Color:Word)
Устанавливает образец штриховки и цвет.

SetLineStyle(LineStyle,Pattern,Thickness:Word)
Устанавливает толщину и стиль линии.

SetTextStyle(Font,Direction,CharSize:Word)
Устанавливает текущий шрифт, направление (горизонтальное или вертикальное) и размер текста.

SetViewPort(X1,Y1,X2,Y2: Integer; ClipOn:Boolean)
Устанавливает прямоугольное окно на графическом экране. Параметр ClipOn определяет «отсечку» элементов изображения, не умещающихся в окне.

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

GraphResult
Возвращает значение GrOk, соответствующее коду 0, если все графические операции программы выполнились без ошибок.ю или возвращает числовой код ошибки (от -1 до -14).

Источник: graphic-in-pascal.blogspot.com

Как написать программу в паскале для рисования

Если в текстовом режиме работы Pascal минимальной единицей экрана является символ, то в графическом режиме – пиксел. Пиксел имеет координаты (X и Y) и цвет (по умолчанию белый). Координаты отсчитываются с левого верхнего угла, т.е. пиксел, расположенный в верхнем левом углу имеет координаты (0,0).
Для того чтобы включить графический режим в Паскале, необходимо подключить его в разделе объявления модулей (USES). В этом уроке мы научимся запускать графический режим и выводить на экран точку.

Включение графического режима.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

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

Процедуры Setcolor, Line.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

В этом уроке мы научимся рисовать линии в графическом режиме и устанавливать цвет этих линий. Линия в графическом режиме Pascal задается с помощью процедуры line, а ее цвет – с помощью процедуры setcolor.

Функции GetmaxX и GetmaxY.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Функция GetmaxX определяет максимальную координату по оси X для данного монитора. Функция GetmaxY определяет максимальную координату по оси Y для данного монитора.

Процедуры MoveTo и LineTo.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

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

Процедура LineRel.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура LineRel (x,y) рисует линию, у которой начальные координаты совпадают с координатами текущего указателя, а координаты конца высчитываются путем прибавления (x,y) к координатам текущего указателя. Кроме того, текущий указатель переносится в эту точку (с координатами конца линии).

Процедура MoveRel и OutText.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура MoveRel (x,y) перемещает текущий указатель на расстояние x и y.
Процедура OutText (‘’) выводит текст на экран в графическом режиме. Текст заключается в кавычки и круглые скобки.

Процедура PutPixel.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

В этом уроке мы напишем программу, которая выводит на экран линию из точек. Для этого нам понадобится процедура вывода на экран точки PutPixel.

Процедура ClearDevice, SetBkColor.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура cleardevice очищает экран. При этом указатель устанавливается в левый верхний угол с координатами (0, 0). Сам экран при этом заполняется цветом фона, который задается процедурой SetBkColor. Напишем программу, которая будет выводить треугольник на голубом фоне.

Процедура SetLineStyle.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура SetLineStyle устанавливает толщину и тип линии. Эта процедура влияет на все линии, которые заданы процедурами Line, LineTo, Rectangle, DrawPoly, Arc, Circle и др.

Процедуры Rectangle и Bar.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедуры Rectangle и Bar используются в Паскаль для рисования прямоугольников. Их отличие друг от друга заключается в том, что процедура Rectangle рисует простой прямоугольник, а процедуры Bar рисует закрашенный прямоугольник.

Процедура Bar3D.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура Bar3D используется в Паскаль для рисования прямоугольных параллелепипедов.

Процедуры Circle и Arc.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура Circle вычерчивает на экране окружность. В качестве параметров этой процедуры используются координаты центра окружности и длина радиуса. Процедура Arc вычерчивает на экране дугу, у которой указываются координаты центра, начальный угол, конечный угол и длину радиуса.

Процедуры Ellipse и FillEllipse.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура Ellipse рисует на экране эллипсную дугу. В качестве параметров для этой процедуры указываются координаты центра дуги в пикселах, начальный и конечный углы в градусах, горизонтальный и вертикальный радиус дуги в пикселах.
Процедура FillEllipse рисует на экране закрашенный элипс, для которого стиль и цвет закраски задается процедурой SetFillStyle.

Процедура FloodFill.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура FloodFill закрашивает замкнутую область. Данная процедура имеет 3 параметра. Первые 2 параметра определяют точку с координатами, откуда начинается закраска. 3-й параметр определяет границу закраски.

Процедуры PieSlice и Sector.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Процедура PieSlice рисует на экране заполненный сектор окружности, а процедура Sector – заполненный эллиптический сектор. Цвет секторов определяется процедурой SetColor, а заполнение — процедурой SetFillStyle.

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

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

Как мы уже знаем, для вывода на экран какого-либо текста используется либо процедура Write, либо Writeln. Эти процедуры применяются исключительно в текстовом режиме. Для того чтобы вывести на экран текст в графическом режиме используется процедура OutText.

Процедура SetTextStyle.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

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

Русские шрифты в графическом режиме.

Язык программирования Паскаль» Категория: Уроки Паскаль — Графика.

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

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

Источник: mojainformatika.ru

Рисование графиков средствами Lazarus (Free Pascal)

Lazarus — свободный проект, альтернатива Delphi, оконная IDE для компилятора Free Pascal. Проект вполне актуальный и довольно часто обновляемый сообществом разработчиков. В данный момент доступна версия 1.4.2 для компилятора Free Pascal 2.6.4.
О проекте в Википедии.
Сайт проекта — http://www.lazarus-ide.org/.

Задача построения графика по заданным данным или известной функции в Lazarus решается аналогично Delphi. Нарисуем график по заданной функции, имеющей в аргументе случайную величину и потому обновляющей значения по нажатию кнопки.
Создаем объект типа TChart и размещаем его на существующей форме где удобнее.

Добавляем к его коллекции данных (Series) (см. свойства TChart) объект типа TLineSeries.

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

Далее прописываем код нажатия кнопок.
Кнопка Draw:
[code language=»Pascal»]

procedure TForm1.Button1Click(Sender: TObject); begin randomize; Chart1LineSeries1.Clear(); for i:=1 to 100 do begin Chart1LineSeries1.AddXY(i*0.1,sin(random(4)*i*0.1)); end; end;
[/code]
Кнопка Clear:
[code language=»Pascal»]
procedure TForm1.Button2Click(Sender: TObject); begin Chart1LineSeries1.Clear(); end;
[/code]
Кнопка Save:
[code language=»Pascal»]
procedure TForm1.Button3Click(Sender: TObject); begin Chart1.SaveToBitmapFile(‘output-graph.bmp’); end;

[/code]
Вывод может быть, например, таким:

Источник: flaurion.livejournal.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru