Линии и точки
Параметр Pattern учитывается только для линий, вид которых определяется пользователем (т.е. в случае, когда Type = UserBitLn). При этом два байта параметра Pattern определяют образец линии: каждый установленный в единицу бит этого слова соответствует светящемуся пикселю в линии, нулевой бит – несветящемуся пикселю. Таким образом, параметр Pattern задает отрезок линии длиной в 16 пикселей. Этот образец периодически повторяется по всей длине линии.
Параметр Thick может принимать одно из двух значений:
const NormWidth = 1; {Толщина в один пиксель} ThickWidth = 3; {Толщина в три пикселя}
Отметим, что установленный процедурой стиль линий (текущий стиль) используется при построении прямоугольников, многоугольников и других фигур.
В следующем примере демонстрируются линии всех стандартных стилей, затем вводятся слово-образец и линия с этим образцом заполнения (рис. 14.4). Для выхода из программы введите ноль.
Рис. 14.4. Образцы линий:
Uses CRT, Graph; const style: array [0..4] of String [9] = ( 'SolidLn ', 'DottedLn ', 'CenterLn 'DashedLn', 'UserBitLn'); var d,r,e,i,j,dx,dy: Integer; p: Word; begin {Инициируем графику} d: = Detect; InitGraph(d, r, ''); e: = GraphResult; if e <> grOk then WriteLn (GraphErrorMsg(e)) else begin {Вычисляем смещение линий} dx: = GetMaxX div 6; dy: = GetMaxY div 10; {Выводим стандартные линии} for j: = 0 to 1 do {Для двух толщин} begin for i: = 0 to 3 do {Четыре типа линий} begin SetLineStyle(i, 0, j*2+1); Line(0,(i+j*4+l)*dy,dx,(i+j*4+l)*dy); OutTextXY(dx+10, (i+j*4+l)*dy,style [i]) end end; {Вводим образец и чертим линию} j: = 0; dy: = (GetMaxY+1) div 25; repeat OutTextXY(320,j*dy,'Pattern: '); GotoXY(50,j+1); ReadLn(p); if p <> 0 then begin SetLineStyle(UserBitLn,p,NormWidth); Line(440,j*dy+4, 600, j*dy+4); inc(j) end until p = 0; CloseGraph end end.