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