Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
98
Добавлен:
04.03.2014
Размер:
593.92 Кб
Скачать

1.3.Вывод дуг, окружностей, эллипсов

Процедура Circle(x,y:integer;Radius:word); рисует окружность с центром в точке с координатами (x,y) и радиусом, равным значению Radius.

Процедура Arc(x,y:integer;StAngle,EndAngle,Radius:word); рисует дугу окружности с центром в точке с координатами (x,y), начальным углом, равным StAngle, конечным углом, равным EndAngle и радиусом, равным Radius.

Процедура FillEllipse(x,y:integer;XRadius,YRadius:word); рисует закрашенный эллипс с центром в точке с координатами (x,y), полуосями, равными XRadius (горизонтальная) и YRadius (вертикальная). Закраска осуществляется в соответствии с текущим образцом и цветом.

Процедура Ellipse(x,y:integer;StAngle,EndAngle:word;XRadius,YRadius:word); рисует дугу эллипса с центром в точке с координатами (x,y), начальным углом, равным StAngle, конечным углом EndAngle и полуосями, равными XRadius (горизонтальная) и YRadius (вертикальная).

Процедура PieSlice(x,y:integer;StAngle,EndAngle,Radius:word); рисует закрашенный сектор круга с центром в точке с координатами (x,y), начальным углом, равным StAngle, конечным углом, равным EndAngle и радиусом, равным Radius. Закраска осуществляется в соответствии с текущим образцом и цветом.

Процедура Sector(x,y:integer; StAngle,EndAngle,XRadius, YRadius:word); рисует закрашенный сектор эллипса с центром в точке с координатами (x,y), начальным углом, равным StAngle, конечным углом, равным EndAngle, и полуосями, равными XRadius (горизонтальная) и YRadius (вертикальная). Закраска осуществляется в соответствии с текущим образцом и цветом.

В рассмотренных процедурах отсчет углов производится в направлении против часовой стрелки от положительного направления оси абсцисс (горизонтали). Угловые величины должны задаваться в градусах и иметь целое неотрицательное значение (в соответствии с типом (word)), таким образом, углы задаются с точностью до 0,5°. При рисовании дуг, секторов, если начальный угол равен 0°, а конечный угол - 360°, то рисуется полная дуга (окружность, эллипс) или полный круг (эллипс).

При задании углов надо следить, чтобы конечный угол был больше начального, так как процедуры Arc, Ellipse рисуют нужную дугу (если начальный угол больше конечного), а процедуры PieSlice, Sector - дополняющую дугу.

Используя перечисленные процедуры, надо быть внимательным: они позволяют рисовать прямоугольники, эллипсы лишь частного положения: со сторонами (осями), параллельными координатным осям. Фигуры произвольного положения они нарисовать не позволяют.

1.4.Вывод текста

Процедура OutText(TextString:string); выводит строку текста TextString, начиная с текущей позиции курсора. Если строка текста слишком длинная (не умещается в поле вывода), то она отсекается по границе поля вывода. Если используется загружаемый по умолчанию шрифт, то при слишком длинной строке текст вообще не выводится на экран.

Процедура OutTextXY(x,y:integer; TextString:string); выводит строку текста TextString, начиная с точки, имеющей координаты (x,y). В случае слишком длинной строки отсечение текста производится, как и в предыдущем случае.

Текст выводится текущим типом. Тип выводимого текста (шрифт, его размер, направление выдачи) устанавливается с помощью следующих процедур.

Процедура SetTextStyle(Font:word;Direction:word;CharSize:word); устанавливает текущий тип шрифта, направление выдачи и размер символов. Font - параметр, задающий тип (номер) шрифта; допустимы следующие значения этого параметра, задаваемые одной из установленных констант:

DefaultFont=0 - загружаемый по умолчанию шрифт, каждый символ отображается на экране в прямоугольнике 8*8 точек;

TriplexFont=1 - тройной шрифт;

SmallFont=2 - маленький шрифт;

SansSerifFont=3 - прямой шрифт;

GothicFont=4 - готический шрифт.

Direction - параметр, задающий направление выдачи шрифта. Допустимы следующие значения этого параметра, задаваемые одной из констант:

HorizDir=0 - горизонтальное направление (слева направо);

VertDir=1 - вертикальное направление (снизу вверх).

Параметр CharSize устанавливает размер выводимых символов, значения этого параметра могут лежать в диапазоне 0-30.

При значении CharSize=1 символ выводится в прямоугольнике размером 8*8 точек, при CharSize=2 - в прямоугольнике размером 16*16 точек и т.д. вплоть до 10-кратного увеличения нормального размера.

Шрифты с номерами 1-4 по умолчанию имеют размер CharSize =4, т.е. каждый символ отображается в прямоугольнике 32*32 точки.

Процедура SetUserCharSize(MultX,DivX,MultY,DivY:word);позволяет пользователю устанавливать нестандартную высоту и ширину символов для всех шрифтов, кроме загруженного по умолчанию.

MultX/DivX - отношение, на которое умножается стандартная ширина текущего шрифта;

MultY/DivY - отношение, на которое умножается стандартная высота текущего шрифта.

Вызов процедуры SetUserCharSize должен предшествовать вызову процедуры SetTextStyle.

На практике полезными оказываются следующие две функции:

TextHeight(TextString:string):word;

TextWidth(TextString:string):word;

Первая функция определяет высоту заданного текста в точках растра, вторая - ширину заданного текста. Результат выдается с учетом текущего размера шрифта и множительного коэффициента. Эти функции полезно использовать при выборе интервала между строками, размера заголовка, ширины и высоты поля вывода.

Графические процедуры языка Турбо-Паскаль не в полной мере соответствуют примитивам стандарта GKS.

Примитив ЛОМАНАЯ реализуется рассмотренной процедурой вывода ломаной линии или многократным использованием вывода отрезка прямой в качестве звена ломаной.

Примитив МАРКЕР в Турбо-Паскале отсутствует, он может быть реализован с помощью процедур рисования линий, точек, прямоугольников, т.е. создается самим пользователем.

Примитив ТЕКСТ реализуется в Турбо-Паскале с помощью ряда уже рассмотренных процедур.

Примитив ПОЛИГОНАЛЬНАЯ ОБЛАСТЬ реализуется рассмотренной процедурой вывода многоугольника.

Примитив МАТРИЦА ЯЧЕЕК может быть реализован с помощью многократного применения процедуры рисования закрашенного прямоугольника Bar.

ОБОБЩЕННЫЙ ПРИМИТИВ ВЫВОДА представлен в Турбо-Паскале процедурами вывода окружности, эллипса, дуг окружности и эллипса, кругового и эллиптического секторов.