Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 18.07.2014, 01:44   #1 (permalink)
Doalse
Member
 
Регистрация: 25.11.2013
Сообщений: 20
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Графика на Pascal

Помогите с операторами.
Хочу разобраться с графикой.
Что использовать и как?
Простые геометрические фигуры и цвета.
Если можно, с примерами.
Doalse вне форума   Ответить с цитированием

Старый 18.07.2014, 01:44
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Отправлю вам список полезных ссылок

C++ Builder графика
Turbo Pascal, построение графика нелинейного уравнения
Построение графика нелинейного уравнения, Turbo Pascal
Графика в Delphi
Графика

Старый 18.07.2014, 03:53   #2 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 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.
Gruvi вне форума   Ответить с цитированием
Старый 18.07.2014, 09:50   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Doalse Посмотреть сообщение
Если можно, с примерами.
И к тому, что написал Женя (Gruvi) добавлю, - примеры Вы можете найти на нашем форуме. В частности, я их навыкладывал изрядно. Ищите по слову Graph или Closegraph.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 14:56.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.