Работа с графикой в языке программирования Turbo Pascal


Содержание документа

  1. Инициализация графики
  2. Процедуры для рисования.

Приложения

  1. Графические драйвера и режимы
  2. Стандартные цвета и шрифты Паскаля

Инициализация графики

Язык Turbo Pascal предоставляет целый ряд процедур и других средств, позволяющих рисовать на экране разноцветные точки, отрезки прямых, дуги, закрашенные и незакрашенные окружности, прмоугольники, а также выполнять ряд других действий.
Все средства для работы с графикой находятся в модуле GRAPH, поэтому он должен быть подключен в программе перед тем, как начать работу:
USES Graph;
Инициализация графики производится с помощью процедуры InitGraph:
InitGraph(var GraphDriver:Integer; var GraphMode:Integer; PathToDriver:String)
Переменная GraphDriver определяет тип видеоадаптера, GraphMode - тип графического режима. Если переменной GraphDriver присвоить значение Detect, то Паскаль сам определит установленный видеоадаптер и установит самый мощный из имеющихся графический режим. Другие возможные значения переменных GraphDriver (графические драйвера) и GraphMode (графические режимы) приведены здесь. Переменная PathToDriver определяет путь к каталогу, в котором находятся графические драйвера Паскаля. Для проверки успешности инициализации графики можно использовать процедуру GraphResult. Если графика была успешно инициализировнана, то процедура GraphResult вернет значение grOk.

Процедуры модуля Graph.

Здесь приведены наиболее интересные и часто используемые процедуры для рисования. Все остальные, быть может, появятся позже, хотя в их использовании и нет особой необходимости. К неописанным ниже относятся такие процедуры, как DrawPoly и FillPoly, позволяющие рисовать многоугольники и закрашивать их, процедуры для работы с экранными координатами и другие. Но того, что есть, обычно хватает.
Очень важно! В языке Паскаль используется нестандартная система координат. Нуль ее расположен в левом верхнем углу, ось Ox направлена вправо, а Oy - вниз.

Процедуры для рисования фигур.

PutPixel(X, Y:Integer; Pixel:Word);
Рисует на экране точку с координатами (X, Y) цветом Pixel.
Line(X1, Y1, X2, Y2:Integer);
Рисует на экране отрезок прямой от точки (X1, Y1) до точки (X2, Y2).
Rectangle(X1, Y1, X2, Y2:Integer);
Рисует на экране прямоугольник с верхним левым углом в точке (X1, Y1) и нижним правым углом в точке (X2, Y2).
Bar(X1, Y1, X2, Y2:Integer);
Рисует на экране залитый прямоугольник с верхним левым углом в точке (X1, Y1) и нижним правым углом в точке (X2, Y2). Стиль и цвет заливки задаются процедурой SetFillStyle.
Bar3D(X1, Y1, X2, Y2:Integer; Depth:Word; Top:Boolean);
Рисует на экране параллелепипед с залитой передней гранью. Глубина фигуры - Depth. Если Top равно TopOn , то параллелепипед рисуется с верхней гранью, если TopOff, то без верхней грани. Стиль и цвет заливки передней грани задаются процедурой SetFillStyle.
Circle(X, Y:Integer; Radius:Word);
Рисует на экране окружность с центром в точке (X, Y) радиусом Radius.
Ellipse(X, Y:Integer; StAngle, EndAngle:Word; XRadius, YRadius:Word);
Рисует на экране эллиптическую дугу с центром в точке (X, Y), радиусами XRadius, YRadius. StAngle, EndAngle - начальный и конечный углы.
Arc(X, Y:Integer; StAngle, EndAngle:Word; Radius:Word);
Рисует на экране дугу окружности с центром в точке (X,Y), радиусом Radius. StAngle, EndAngle - начальный и конечный углы.
FillEllipse(X, Y:Integer; XRadius,YRadius:Word);
Рисует на экране залитый эллипс с центром в точке (X, Y), радиусами XRadius, YRadius. Стиль и цвет заливки задаются процедурой SetFillStyle.
Sector(X, Y:Integer; StAngle, EndAngle:Word; XRadius, YRadius:Word);
Рисует на экране закрашенный сектор эллипса с центром в точке (X, Y), радиусами XRadius, YRadius. StAngle, EndAngle - начальный и конечный углы. Стиль и цвет заливки задаются процедурой SetFillStyle.
PieSlice(X, Y:Integer; StAngle, EndAngle:Word; Radius:Word);
Рисует на экране закрашенный сектор круга с центром в точке (X, Y), радиусом Radius. StAngle, EndAngle - начальный и конечный углы. Стиль и цвет заливки задаются процедурой SetFillStyle.

Другие процедуры.

ClearDevice;
Очищает экран в графическом режиме.
CloseGraph;
Закрывает графический режим.
SetColor(Color:Word);
Устанавливает новый цвет для рисования.
SetLineStyle(LineStyle:Word; Pattern:Word; Thickness:Word);
Устанавливает стиль и толщину линий. Если Thickness равно ThickWidth, то линии будут толстыми, если NormWidth, то обычными.
SetFillStyle(Pattern:Word; Color:Word);
Устанавливает стиль и цвет заливки. Если Pattern равно UserFill, то используется определенный пользователем стиль, описанный процедурой SetFillPattern.
SetFillPattern(Pattern:FillPatternType; Color:Word);
Устанавливает определяемый пользователем стиль и цвет заливки. FillPatternType=Array [1..8] of Byte;
FloodFill(X, Y:Integer; Border:Word);
Заливает область вокруг точки (X, Y) до линии цвета Border, используя текущий стиль и цвет заливки.
SetTextStyle(Font, Direction:Word; CharSize:Word);
Устанавливает используемый шрифт, его направление и размер. Направление соответствует значению переменной Direction и может быть горизонтальным (Direction=0) или вертикальным (Direction=1). Шрифт может быть как одним из стандартных, так и определенный пользователем (с помощью функции InstallUserFont).
SetUserCharSize(MultX, DivX, MultY, DivY:Word);
Устанавливает ширину букв используемого шрифта в MultX/DivX раз больше, а высоту в MultY/DivY раз больше.
OutTextXY(X, Y:Integer; TextString:String);
Выводит текст TextString на экран от точки (X, Y).
Hosted by uCoz