|
||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Байта орнамента числа числа1 1 0 0 0 0 0 0 1 $81 2 1 1 0 0 0 0 1 1 $C3 3 0 1 1 0 0 1 1 0 $66 4 0 0 1 1 1 1 0 0 $3C 5 0 0 0 1 1 0 0 0 $18 6 0 0 0 1 1 0 0 0 $18 7 0 0 0 1 1 0 0 0 $18 8 0 0 0 1 1 0 0 0 $18 Шестнадцатеричные цифры соответствуют двоичным тетрадам цифр:
0000 - 0 0100 - 4 1000 - 8 1100 - С 0001 - 1 0101 - 5 1001 - 9 1101 - D 0010 - 2 0110 - 6 1010 - A 1110 - E 0011 - 3 0111 - 7 1011 - B 1111 - F
Причем, двоичное число разбивается на тетрады цифр с конца числа, а шестнадцатеричное число получается заменой каждой тетрады соответствующей цифрой с добавлением в начале числа символа "$".
Орнамент удобно задавать, используя переменные с начальным значением (типизированные константы), например: {оператор описания:} Const Bukva_Y: FillPatternType=($81,$C3,$66,$3C,$18,$18,$18,$18);
{оператор выполнения:} SetFillPattern(Bukva_Y, 4);
Можно добавлять один орнамент к другому используя логические операции, например, A и B - исходные орнаменты, Z - результирующий орнамент. Тогда: Z:= A and B; - орнамент из совпадающих единичных частей исходных орнаментов, Z:= A or B; - орнамент с добавлением единичных частей исходных орнаментов, Z:= A xor B; - орнамент из несовпадающих единичных частей исходных орнаментов, Z:= not A; - орнамент инверсный (обратный) к исходному орнаменту. Z:= A xor A; - обнуление, Z:= A xor (not A); - сплошное заполнение орнамента.
Приведем процедуры построения заполненных установленным орнаментом фигур. Граница заполняемых фигур рисуется текущим цветом для линий. Bar(X1, Y1, X2, Y2); - построить заполненный прямоугольник с заданными координатами левого верхнего (X1, Y1) и правого нижнего (X2, Y2) углов. Аналог процедуры: Rectangle(X1, Y1, X2, Y2);. Bar3d(X1, Y1, X2, Y2, d, t); -построить параллелепипед с заполненной передней гранью. Координаты углов: (X1, Y1), (X2, Y2), глубина "d". Переменная "t" типа boolean задает вывод верхней грани. При t=TopOn (true) верхняя грань показывается, при t=TopOff (false) - нет. FillEllipse(X, Y, RX, RY); - построить заполненный эллипс с центром в точке (X, Y) и радиусами (полуосями): RX - по горизонтали, RY - по вертикали. Sector(X, Y, A1, A2, RX, RY); - построить заполненный сектор эллипса. A1 и A2 - начальный и конечный углы (в градусах), отсчитываемые против часовой стрелки относительно направления оси Х. Аналог процедуры: Ellipse(X, Y, A1, A2, RX, RY); строит сектор эллипса без автоматического заполнения. PieSlice(X, Y, A1, A2, R); - построить заполненный сектор круга с центром в точке (X, Y) и радиусом R. Аналог процедуры: Arc(X, Y, A1, A2, R); строит дугу окружности. FillPoly(N, M); - заполнить произвольную плоскую фигуру с границей, описанной массивом точек. N - число точек границы, М - параметр - переменная типа PointType, определяемая в модуле Graph в виде: TYPE PointType = Record x, y: Integer End; В программе массив можно описать операторами: Const N=100; Var M: array[1..N] of PointType; Присвоение значений можно провести в цикле: For i:=1 to 3 do begin M[i].x:=random(95); M[i].y:=random(95) end; Приведем пример программы, выводящей два прямоугольника с орнаментами пользователя (bukva_Y и Red_50), а затем демонстрирующей набор стандартных орнаментов на передней грани параллелепипедов:
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |