|
|||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Работа с линиями
В графическом режиме курсор невидим, его положение можно определить функциями, возвращающими значения координат: GetX; - по оси "Х", GetY; - по оси "Y".
Следующие процедуры перемещают курсор без рисования: MoveTo(x, y); - переместить курсор в точку с координатами (x, y), MoveRel(dx,dy); - сместить курсор на расстояние dx, dy от текущего положения.
Для построения многоугольников и ломаных линий удобно использовать процедуры: LineTo(x, y); - провести отрезок прямой линии от текущего положения курсора до точки с координатами X, Y. LineRel(dX, dY); - провести отрезок прямой линии от текущего положения курсора до точки, смещенной на расстояние dX, dY по соответствующим осям. В отличие от процедуры Line(x1, y1, x2, y2); процедуры LineTo(x, y); и LineRel(dX, dY); при своем исполнении перемещают текущий указатель. Пример операторов для построения восьмиугольника: R:=100; { расстояние от вершин до центра xc, yc } xc:= GetMaxX div 2; yc:= GetMaxY div 2; for i:= 1 to 8 do begin alfa:= i * pi/4; { значение угла в рад. } x[i]:= xc + round(R * cos(alfa)); { координаты вершин } y[i]:= yc + round(R * sin(alfa)) end; MoveTo(x[8], y[8]); { исходная позиция для рисования } for i:= 1 to 8 do LineTo(x[i], y[i]); { рисование линий }
Для отрезков прямых линий и процедур с их использованием можно задать режимы построения прямых линий оператором: SetWriteMode(N);
N=0 - замещение линией изображения на экране (режим CopyPut) используется по умолчанию, N=1 - изображение комбинируется (режим XorPut). Работа функции состоит в изменении согласно логической операции "исключающее ИЛИ" исходного значения цвета пиксела (числа "1" или "0"). Логическая функция Xor, примененная к одной переменной дважды, восстанавливает ее исходное значение: (J xor I) xor I = J. Следовательно при повторном проведении линии в режиме XorPut изображение этой линии уничтожается, а цвет пикселов экрана становится исходным. На этом правиле основаны некоторые программы построения движущихся изображений.
Пример операторов для рисования движущегося прямоугольника: SetWriteMode(1); a:= 100; b:= 50; { стороны прямоугольника } x1:= 0; y1:= GetMaxY div 2; N:= GetMaxX - x1 - a; { N - число перемещений } for i:= 0 to N do begin Rectangle(x1+i, y1, x1+a+i, y1+b); { рисование прямоугольника } delay(10); Rectangle(x1+i,y1,x1+a+i,y1+b); { стирание прямоугольника } end;
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |