TURBO PASCAL |
Новости |
1. 15. 3. 2. Работа с линиями
В графическом режиме курсор невидим,
его положение можно определить
функциями, возвращающими
значения координат:
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; |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |