Здесь (X,Y) - координаты центра окружности, Radius - ее радиус. Результатом ее работы будет окружность, если коэффициент изображения соответствует принятому BGI-драйвером для текущего графического режима. В противном случае на экране появится эллипс, вытянутый по вертикали (коэффициент сжатия больше принятого по умолчанию) или по горизонтали (коэффициент меньше принятого).
В модуле Graph представлены процедуры рисования эллипсов, дуг, секторов и процедура, позволяющая рисовать сектор, залитый по заданному шаблону. Все они запрашивают параметры StartAngle и EndAngle, которые обозначают начальный и конечный угол дуги. На рисунке изображена система графических координат, в которой мы работаем.
Положительное направление оси X (слева направо) принято за 0°, отрицательное направление оси Y - за 90°, т.е. углы отмеряются от положительного направления оси X против часовой стрелки. Все значения этих параметров даются в градусах.
Ниже перечислены процедуры рассматриваемого класса:
Рисование дуги радиуса Radius из центра с координатами (X,Y) от угла StartAngle до EndAngle:
Arc(X, Y: Integer; StartAngle, EndAngle, Radius: Word)
При изменении коэффициента сжатия изображения вид выводимых дуг будет отличаться от правильных окружностей.
Рисование эллиптической дуги с аналогичными параметрами:
Ellipse (X, Y: Integer; StartAngle, EndAngle, XRadius, YRadius: Word)
где XRadius и YRadius - размеры горизонтальной и вертикальной полуосей соответственно. Оси эллипса могут быть только параллельны осям X и Y. Для изображения полного эллипса надо задавать углы 0° и 360°. Значение коэффициента сжатия изображение не влияет на его вид.
Угловые параметры очень неудобны для нашей системы координат - мы можем определить координаты начала и конца дуг окружности или эллипса не иначе, как только используя известные тригонометрические выражения. Но в подобных вычислениях нет необходимости, поскольку эти координаты все равно известны внутри процедур Arc , Ellips , Sector и PieSlice .
Извлечь концевые координаты дуг позволяет процедура
GetArcCoords (VAR ArcCoords : ArcCoordsType )
Тип ArcCoordsType объявлен в модуле Graph следующим образом:
TYPE
ArcCoordsType = RECORD
X, Y | :Integer; | {центр} |
XStart, YStart | :Integer; | {начало} |
XEnd, YEnd | :Integer; | {конец} |
END;
Рассматриваемая процедура возвращает результаты последнего вызова процедуры рисования дуги или сектора.
Построение прямоугольников и ломаных
Для построения прямоугольника достаточно вызвать процедуру Rectangle (Х1, Y 1, Х2, Y 2: Integer ), которая изобразит на экране прямоугольник с диагональю (X1, Y1) - (X2, Y2). Для рисования квадрата надо выбрать высоту прямоугольника так, чтобы она равнялась произведению ширины на коэффициент сжатия изображения.
Чтобы построить фигуры с большим количеством вершин (в том числе и незамкнутые), можно воспользоваться процедурой
Дата: 2019-05-29, просмотров: 210.