Разрешающая способность графического режима определяется количеством выводимых пикселей по горизонтали и вертикали.
Значения эти различные, поэтому построение некоторых геометрических фигур будет происходить с искажениями. Например нарисованная окружность будет напоминать по форме эллипс. Для корректировки несоответствия размеров по вертикали и горизонтали введен коэффициент сжатия изображения, который можно получить процедурой :
GetAspectRatio(var Xasp,Yasp:word) - возвращающая максимальное разрешение по x - Xasp, и по оси y - Yasp. Коэффициент сжатия рассчитывается как отношение Xasp/Yasp.
Пример.
Uses Graph,Crt;
Var
X,Y,Driver,Mode:integer;
Xasp,Yasp:word;
Begin
Driver:=Detect;
InitGraph(Driver,Mode,'c:\bin\tp');
GetAspectRatio(Xasp,Yasp);
X:=20;
{ подгонка значения Y}
Y:=round(Xasp/Yasp)*X;
{ вывод квадрата }
Rectangle(0,0,X,Y);
readln;
CloseGraph;
End.
Rectangle(x1, y1, x2, y2 : integer) процедура вывода контура прямоугольника, установленным стилем изображения линии и заданным цветом.
Пример. Rectangle(10,10,100,100)
Bar(x1, y1, x2, y2: integer) - процедура изображения закрашенного прямоугольника. Данная процедура не производит обводку контура прямоугольника .
процедура изображения параллелепипеда c закрашенной передней гранью. Выведенный параллепипед является прозрачным, т.к. за не закрашенными гранями можно увидеть другие элементы изображения. Где
x1, y1, x2, y2 как и в процедуре Bar.
Depth - значение в пикселях размера изображения для третьего измерения(0-16) - глубины изображения. Нулевой параметр глубины выводит закрашенный прямоугольник.
Top - способ изображения верхней грани. True - вычерчивается, False - нет. Значение Top можно задаать константами.
const
TopOn = true;
TopOff = false;
Это свойство используется для изображения параллелепипедов, поставленных друг на друга.
Пример.
Uses Crt,Graph;
Var Driver,Mode:integer;
Begin
Driver:=Detect;
InitGraph(Driver,Mode,'');
Bar3D(10,10,110,60,10,TopOn);
Bar3D(10,60,50,110,10.TopOff);
readln;
CloseGraph
End.
DrawPoly(N:word; var PolyPoints:PointType) процедура изображения ломаной линии по N точкам с координатами, заданны-ми типом PointType, определенного как:
type PointType = Record
x, y:word
end;
Для вычерчивания замкнутой фигуры с N вершинами, нужно задавать (n+1) координат, где (n+1)-ая точка совпадает с первой. Например для вычерчивания треугольника нужно задать 4 вершины.
С помощью DrawPoly можно выводить на экран график функции по заданным значениям.
Процедура FillPoly(N:word; var PolyPoints:PointType) производит штриховку многоугольника и обвод его линией. Параметры N и PolyPoints аналогичны параметрам процедуры DrawPoly. Отличие от DrawPoly состоит в том, что координаты (n+1)-й точки могут не совпадать с первой. Однако эти точки будут все равно соединены и заштрихуется внутренняя область .