Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Grafika_Turbo-Pascal.doc
Скачиваний:
24
Добавлен:
08.03.2015
Размер:
362.5 Кб
Скачать

Дуги, окружности, эллипсы

При использовании процедур Arc, Ellipse, PieSlice углы отсчитываются против часовой стрелки и указываются в градусах. Нулевой угол соответствует горизонтальному направлению вектора слева направо. Например, 0 градусов соответствует 3 часам, 90 градусов - 12 часам и т.д.

ARC(X,Y:integer;StAngle,EndAngle,R:word) процедура изображе­ния дуги окружности текущего цвета, где

X,Y - координаты центра;

StAngle - начальный угол;

EndAngle - конечный угол;

R - радиус дуги.

Если начальный угол равен 0, а конечный 360 градусов, на экране будет нарисована окружность.

Информация о последнем вызове Arc может быть получена с помощью процедуры GetArcCoords см. раздел 3.2

Circle(X,Y:integer;R:word) - процедура изображения окружности с центром в точке X,Y радиуса R текущим цветом. Линия всегда сплошная. Процедура выводит правильную окружность ( с учетом коэффициента сжатия изображения ), поэтому параметр R определяет количество пикселей в горизонтальном направлении.

PieSlice(X,Y:integer; StAngle,EndAngle,R:word) - процедура вывода на экран заштрихованного сектора окружности, с центром X,Y. Сектор изображается от начального угла - StAngle, до конечного - EndAngle.

Ellipse(X,Y:integer; StAngle,EndAngle,RX,RY:word) - процедура изображения части эллипса от начального до конечного угла (StAngle) и (EndAngle). При этом центр эллипса находится в точке с координатами X,Y и горизонтальными вертикальными полуосями RX и RY соответственно. При начальном угле равном 0, а конечном 360 будет изображен полный эллипс.

FillEllipse(X,Y:integer;RX,RY:word) - процедура вывода заштрихованного эллипса с центром в точке X,Y, с горизонтальной RX и вертикальной RY полуосями.

Sector(X,Y:integer; StAngle,EndAngle,RX,RY:word) - процедура вывода заштрихованного эллипсного сектора. Все параметры аналогичны параметрам в процедуре Ellipse.

Пример. Вывод всех рассмотренных геометрических фигур.

Uses Graph,Crt;

var

x,y,Driver,Mode:Integer;

begin

Driver:=Detect;

InitGraph(Driver,Mode,'c:\bin\tp');

SetColor(2);

x:=50; y:=50;

OutText(' Circle Ellipse Arc');

Circle(x,y,40);

SetColor(3);

Ellipse(x*3,y,0,360,30,20);

SetColor(1);

Arc(x*6,y,0,180,40);

MoveTo(0,y*2);

OutText(' PieSlice FillEllipse Sector');

PieSlice(x,y*3,0,270,40);

FillEllipse(x*3,y*3,30,20);

Sector(x*6,y*3,0,270,40,30);

readln;

CloseGraph

end.

Вывод текста

Графический модуль Graph имеет ряд процедур и функций,обеспечивающих вывод сообщений различными шрифтами, в горизонтальном и вертикальном направлении с учетом масштабированния, используя установленные процедурами SetTextStyle, SetTextJustify, SetUserCharSize параметры.

Все процедуры вывода текста работают только со строковыми переменными, поэтому вся числовая информация предварительно должна быть преобразована в строковую.

Вывод сообщений на русском языке не осуществляется, т.к. среди стандартных шрифтов отсутствует кириллица.

Стандартный шрифт доступен в модуле в любой момент, т.к. входит в Graph.tpu. Это единственный матричный шрифт, т.е. его символы создаются из матриц 8 * 8 пикселей. Остальные шрифты штриховые : их элементы формируются как совокупность векторов (штрихов), характеризующихся направлением и размером. Преимущество штрихового шрифта в сохранении хорошего качества изображения при изменении размеров выводимых символов.

Каждый из штриховых шрифтов размещается в отдельном файле на диске, поэтому , если в каталоге не найдется файла с соответствующим шрифтом, его вызов игнорируется и подключается

стандартный.

Процедуры Write и Writeln могут выводить сообщения на любом национальном языке после загрузки в память второй половины кодовой таблицы, разработанной заранее.

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

OutTextXY (x,y:integer; Text:string) - процедура вывода текста, начиная с точки (x,y). Текущий указатель не меняет своего положения.

TextWidth(Text :string):word - функция определения ширины выводимой строки в пикселях. Используется для определения ширины поля вывода, при формировании заголовков в графиках.

TextHeigth(Text : string):word - функция определения высоты выводимой строки в пикселях равной высоте самого высокого символа. Данная процедура используется при вычислении интервала между строками, высоты поля вывода, определения размера заголовка для размещения его в прямоугольнике, на графике и т.д.

Пример.

Uses Graph,Crt;

var

Y,size,Driver,Mode:Integer;

begin

Driver:=Detect;

InitGraph(Driver,Mode,'');

Y:=0;

for size:=1 to 5 do

begin

SetTextStyle(DefaulFont,HorizDir,Size);

OutTextXY(0,Y,' Turbo Graphics');

Inc(Y,TextHeight(' Turbo Graphics'))

end;

readln;

CloseGraph

End.

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

const

DelaultFont = 0; { стантартный}

TriplexFont = 1; { шрифт тройной: Trip.chr}

SmallFont = 2; { уменьшенный: Litt.chr}

SansSerifFont = 3; { гротесковый: Sans.chr}

GothicFont = 4; { готический: Goth.chr}

Для указания направления вывода текста используются

константы:

const

HorizDir = 0; { слева направо }

VertDir = 1; { снизу вверх }

Параметр CharSize дает возможность изменять размер выво-

димых символов.

Если CharSize равен 1 (стандартный) шрифт представляется в виде матрицы 8 * 8 пикселов, если равен 2, то на экран отображается матрица 16 * 16 и т.д. для CharSize меньше 0, устанавливается размер равный 1, а если больше 10 - устанавливается 10. По умолчанию фиксируется нормальный размер, равный 4.

Пример. Вывод текста всеми видами шрифтов с расчетом интервала между строк.

Uses Graph,Crt;

var

X,Driver,Mode:Integer;

Font:word;

begin

Driver:=Detect;

InitGraph(Driver,Mode,'');

X:=0;

for Font:=0 to 4 do

begin

SetTextStyle(Font,VertDir,2);

OutTextXY(X,0,' Turbo Graphics');

Inc(Y,TextWhidth(' Turbo Graphics'))

end;

readln;

CloseGraph

End.

SetUserCharSize(x1, x2, y1, y2 :word) - процедура установки размеров выводимых символов (ширины и высоты), в соответствии с указанными пропорциями x1, x2, y1, y2. Пропорции задают масштабный коэффициент, определяющий во сколько раз увеличивается ширина и высота выводимых символов по отношению к заданным.

Отношение x1 к x2 - коэффициент изменения символа по горизонтали, y1 к y2 - по вертикали.

Например, для увеличения ширины текста в 2 раза, необходимо задать x1 = 2, x2 = 1.

Процедура SetTextStyle отменяет установки шрифта SetUserCharSize.

Пример.

Uses

Graph,Crt;

var

Driver,Mode:Integer;

begin

Driver:=Detect;

InitGraph(Driver,Mode,'');

{ пример изменения размера выводимых симолов }

SetTextStyle(TriplexFont,Horizdir,4);

OutText(' нормальный ');

SetUserCharSize(1,3,1,1);

OutText(' уменьшеный ');

SetUserCharSize(3,1,1,1);

OutText(' увеличенный ');

readln;

CloseGraph

end.

Выравнивание выводимого текста производится относительно

текущего указателя процедурой:

SetTextJustify(Horiz,Vert: word).

Для указания режима выравнивания определены константы:

const

{горизонтальное выравнивание}

LeftText = 0; { слева }

CenterText = 1; { по центру }

RighText = 2; { справа }

{вертикальное выравнивание}

BottomText = 0; { снизу }

CenterText = 1; { по центру }

TopText = 2; { сверху }

Пример обращения к процедуре при выравнивании относитель-

но центра экрана:

SetTextJustify(CenterText,CenterText);

OutText(GetMaxX div 2,GetMaxY div 2,' Hello !!!');

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]