18.07.2014, 01:44 | #1 (permalink) |
Member
Регистрация: 25.11.2013
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Графика на Pascal
Хочу разобраться с графикой. Что использовать и как? Простые геометрические фигуры и цвета. Если можно, с примерами. |
18.07.2014, 01:44 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Отправлю вам список полезных ссылок C++ Builder графика Turbo Pascal, построение графика нелинейного уравнения Построение графика нелинейного уравнения, Turbo Pascal Графика в Delphi Графика |
18.07.2014, 03:53 | #2 (permalink) |
VIP user
Регистрация: 10.03.2011
Сообщений: 765
Записей в дневнике: 1
Сказал(а) спасибо: 10
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
|
Графика
Для формирования графических изображений в языке Turbo Pascal предназначен стандартный библиотечный модуль GRAPH. Этот модуль содержит десятки стандартных программ и типов данных, а также около 80 графических процедур и функций. Подключение этого модуля к пользовательской программе осуществляется директивой Uses graph. С момента подключения модуля GRAPH становятся доступны все графические средства. В первую очередь вызывается процедура инициализации графического режима: InitGraph (var Gd : integer; var Gm : integer; Path : string) Этой процедурой устанавливается драйвер, режим и путь к каталогу, где находится драйвер. Обычно драйверы подключаются в режиме автоопределения используемого монитора ПК. Для этого перед инициализацией графики задается Gd:= Detect (или Gd:= 0). В этом случае по умолчанию устанавливается режим с наибольшим числом точек на экране, а значение параметра "Gm" игнорируется. Номер наибольшего режима для текущего драйвера возвращает функция GetMaxMode. Изменить режим можно процедурой SetGraphMode(Gm). Экран при этом очищается. Третий параметр – путь к драйверу; если он расположен в текущем каталоге, то вместо маршрута ставятся пустая строка (два апострофа). Для построения изображений на экране используется система координат. Отсчет начинается с левого верхнего угла, который имеет координаты (0,0). Цена деления - один пиксел. Разрешающую способность для текущего графического режима можно определить функциями, возвращающими максимальные значения координат экрана: GetMaxX - по оси Х; GetMaxY - по оси Y. Для возврата из графического режима в текстовый можно использовать операторы: CloseGraph - полное прекращение работы графической системы; RestoreCrtMode - переключение в текстовый режим с возможностью возврата к текущим установкам графического режима (оператором SetGraphMode). Очистить графический экран можно процедурой ClearDevice (без изменения установленных параметров) либо GraphDefaults (устанавливаются параметры, принятые по умолчанию). Процедуры рисования SetBkColor( N) - установить цвет N для пикселов фона. SetColor( N) - установить цвет N для выводимых линий. PutPixel(X, Y, N) - высветить цветом N пиксель с координатами X,Y. GetPixel(X, Y) - определить цвет пиксела с координатами X, Y. При задании цвета можно использовать следующие коды: 1. Наименование цвета 2. Цвет 3. Код цвета Black черный 0 Blue синий 1 Green зеленый 2 Gyan бирюзовый 3 Red красный 4 Magenta малиновый 5 Brown коричневый 6 LightGray светло-серый 7 DarkGray темно-серый 8 LightBlue голубой 9 LightGreen ярко-зеленый 10 LightGyan ярко-бирюзовый 11 LightRed ярко-красный 12 LightMagenta ярко-малиновый 13 Yellow желтый 14 White белый 15 Circle(X, Y, R) - окружность с центром X, Y радиуса R. Arc(X,Y, A1,A2, R) - дуга окружности. Ellipse(X,Y, A1,A2, RX,RY) - сектор эллипса с полуосями RX,RY. A1, A2 - начальный и конечный углы (в градусах), отсчитываемые против часовой стрелки относительно оси Х. Line(X1,Y1, X2,Y2) - отрезок прямой от точки с координатами X1,Y1 к точке с координатами X2,Y2. LineTo(X, Y) - отрезок прямой от текущего положения курсора до точки X,Y. LineRel(dX, dY) - отрезок прямой от текущего положения курсора до точки, смещенной на расстояние dX,dY. В отличие от процедуры Line процедуры LineTo и LineRel при своем исполнении перемещают текущий указатель. Перемещать курсор без рисования можно процедурами MoveTo(X, Y) иMoveRel(dX,dY). В графическом режиме курсор невидим, а его положение можно определить функциями, возвращающими значения координат: GetX - по оси Х, GetY - по оси Y. Rectangle(X1,Y1, X2,Y2) - прямоугольник с левым верхним углом в точке X1,Y1 и правым нижним углом в точке X2,Y2 (стороны параллельны краям экрана ). Код:
Пример 1. В данной программе происходит инициализация графического режима, после чего рисуется линия из левого верхнего в правый нижний угол. Program graph1; uses graph; var gd,gm,error: integer; begin gd:=detect; initgraph(gd,gm,''); error:=graphresult; if error <> grOk then begin write ('Ошибка графики: ', grapherrormsg(error)); readln; halt; end; line (0,0,getmaxx,getmaxy); readln; closegraph; end. Процедуры построения заполненных фигур Граница заполняемых фигур рисуется текущим цветом для линий. Цвет N и стиль заполнения P (орнамент) можно устанавливать из стандартного набора BGI или определять самим процедурой SetFillStyle(P, N). Типы и толщина линий: 0 - сплошная 1 - точечная 2 - штрихпунктирная 3 – пунктирная Шаблоны штриховки: 1.Наименование шаблона 2.Вариант заполнения 3.Код цвета EmptyFill заполнение цветом фона 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 Bar(X1,Y1, X2,Y2) - прямоугольник; Bar3d(X1,Y1, X2,Y2, d, t) - параллелепипед с заполненной передней гранью (координаты углов грани X1,Y1, X2,Y2) глубиной d. Переменная t типа boolean задает вывод верхней грани. При t=TopOn (true) верхняя грань показывается, при t=TopOff (false) - нет. FillEllipse(X,Y, RX,RY) - заполненный эллипс; Sector(X,Y, A1,A2, RX,RY) - заполненный сектор эллипса; PieSlice(X,Y, A1,A2, R) - заполненный сектор круга. FillPoly(N, M) - заполнить произвольную плоскую фигуру с границей, описанной массивом N точек границы. М - параметр типа PointType ( Var M: array[1..N] of PointType). Код:
Пример2. Изображение графических фигур Program primer2; uses graph; var grad,grreg:integer; begin grad:=detect; initgraph(grad,grreg,’’); SetFillstyle(solidfill,lightgray); floodfill(100,100, lightgray); SetFillstyle(solidfill,green); bar(100,150,200,250); setcolor(lightred); circle(300,200,50); floodfill(300,200,lightred); setcolor(blue); line(400,250,460,150); line(460,150,520,250); line(520,250,400,250); SetFillstyle(solidfill,blue); floodfill(460,200,blue); readln; closegraph; end. |
18.07.2014, 09:50 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|