DrawPoly (NumPoints: Word; VAR PolyPoints)
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Она позволяет рисовать на экране дисплея любую ломаную, заданную набором координат некоторого множества точек. Это может быть как сложная геометрическая фигура, так и табличная математическая функция. Параметр NumPoints - это количество точек ломаной (заметим, что если необходимо нарисовать замкнутый многоугольник с N вершинами, то значение NumPoints должно быть на единицу больше числа N, а координата (N+1) –й точки должна быть такой же, как координата первой). Под бестиповым параметром PolyPoints понимается какая-либо переменная, состоящая из наборов двухкомпонентных записей. Поля каждой записи должны содержать координаты X-и Y очередной точки. В модуле Graph введен такой тип:

TYPE

PointType = RECORD

X , Y : Integer ; {координаты точки}

END ;

Обычно набор точек организуется как массив из записей типа PointType (и именно к такой структуре приводится значений параметра PolyPoint при работе процедуры DrawPoly). Пример построения графика функции с помощью процедуры DrawPoly приведен далее.

 

USES Graph; {подключен модуль Graph }
{$I initgraf.pas} {процедура инициализации}
CONST  
Pi * 3.14151828; {константа Pi (замещает функцию)}
Pi2 = 2 * Pi; {различные производные от Pi...}
Pi001 = 0.01* Pi;  
VAR  
angle: Real;  
sine_func: Array [1.201] of PointType ; { массив точек}
maxy, i: Integer;  
BEGIN  
Grlnit; {инициализация графики}
maxy := GetMaxY div 2; {середина экрана по оси Y}
angle := 0.0; {задание стартовых значений}
i := 0; { счетчик точек в sine_func}
repeat { цикл заполнения sine_func }
Inc ( i );  

sine_func[i].x:= Round (100 * angle) + 10;

sine_func[i].y:= Round (100 * Sin (angle)) + maxy;

angle := angle + Pi001;  
until angle > Pi2;  
DrawPoly (i, sine_func) ; { рисование графика синуса}
ReadLn; {пауза до нажатия ввода}
CloseGraph {закрытие графики}
END.  

 

С помощью DrawPoly можно вывести график части функции. Для этого достаточно указать при передаваемом массиве номер n первого рассматриваемого элемента (т.е. точки), а в первом параметре — количество рассматриваемых точек, начиная с n-й, например

DrawPoly (20, sine _ func [100]);

Такой вызов выведет ломаную линию по точкам с номерами 100, 101,..., 119.

При выводе количества точек, соизмеримого со значением GetMaxX, и при несплошном стиле линии может оказаться, что шаг между соседними точками соответствует ширине пробела между пунктиром. В итоге линия может вообще не проявиться на экране. Надо либо уменьшить число точек, либо избрать сплошной тип линии.

Управление цветами и шаблонами заливки (заполнения)

 

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

Задание типа заливки

 

В модуле Graph предусмотрены процедуры, с помощью которых можно заполнить (залить) определенным «узором» любую замкнутую область изображения. Вид «узора» задается так называемым шаблоном заливки. В Турбо Паскале предопределен ряд стандартных шаблонов, но кроме того, имеется возможность конструировать собственные.

Назначение шаблона заполнения (заливки) производится процедурой

SetFillStyle (Pattern: Word; Color: Word)

где параметр Pattern определяет вид шаблона заливки, a Color — его цвет. Все разрешенные значения параметра Pattern предопределены в модуле Graph в виде констант:

CONST

 

EmptyFill =0 { сплошная заливка цветом фона}
SolidFill =1 { сплошная заливка текущим цветом}
LineFill =2 { заливка типа ===}
LtSlashFill =3 { заливка типа ///}
SlashFill =4 { заливка жирными линиями типа ///}
BkSlashFill =5 { заливка жирными линиями типа \\\}
LtBkSlashFill =6 { заливка типа \\\}
HatchFill =7 { заливка редкой штриховкой}
XHatchFill =8 { заливка частой штриховкой}
InterleaveFill =9 { заливка прерывистой линией}
WideDotFill =10 { заливка редкими точками}
CloseDotFill =11 { заливка частыми точками}
UserFill =12 { заливка, определенная программистом}

 

Константа UserFill используется для определения типа заливки, который предварительно был задан в программе. Для задания своего нового шаблона необходимо воспользоваться процедурой

Дата: 2019-05-29, просмотров: 198.