Файл: ...\Samples\Solution\Forms\Graphics\Anim.scx

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

Введние линий в таблицу

Каждый раз, когда пользоватлеь рисует линию на форме, ее координаты сохраняются в таблице с приведенной ниже структуров:

 
Имя Тип Описание

Frameno

I

Увеличивается каждый раз, когда пользователь выбирает New Frame (Новый кадр).

Objno

I

Увеличивается каждый раз, когда линия вводится в кадр.

X1

I

Начальная координата X для линии.

X2

I

Конечная координата X для линии.

Y1

I

Начальная координата Y для линии

Y2

I

Конечная координата Y для линии.

Проигрывание кадров

Приведенный ниже программный код проигрывает кадры, повторно использует таблицу в другой рабочей области, выбирает вторую рабочую область и переходит к следующему кадру:

 CopyCode imageСкопировать код
USE (lcTable) AGAIN IN 0 ALIAS shadow
SELECT shadow
LOCATE FOR frameno # &lcTable..frameno

Переменная nBetween определяет, сколько промежуточных линий рисуется на форме между линией в одном кадре и соответствующей линией в другом кадре.

 CopyCode imageСкопировать код
FOR nb = 1 TO nBetween

Внутри цикла FOR код сканирует таблицу для поиска всех линий, связанных с кадром и вычисляет координаты для промежуточных линий, например:

 CopyCode imageСкопировать код
nx1 = frames.x1 + nb * (shadow.x1 - frames.x1) / nBetween
ny1 = frames.y1 + nb * (shadow.y1 - frames.y1) / nBetween

Затем код рисует каждую промежуточную линию и после ожидания в полсекунды (WAIT .05) очищает форму и продолжает цикл.

 CopyCode imageСкопировать код
THISFORMSET.frmAnimation.line(nx1,ny1,nx2,ny2)

Смотрите также