Файл: ...\Samples\Solution\Forms\Graphics\Anim.scx
Этот образец иллюстрирует рисование линий на форме. Или точнее, он демонстрирует сохранение координат набора линий для их отрисовки и перерисовки наряду в дополнительными линиями в промежуточных позициях, создающих эффект движения.
Введние линий в таблицу
Каждый раз, когда пользоватлеь рисует линию на форме, ее координаты сохраняются в таблице с приведенной ниже структуров:
| Имя | Тип | Описание |
|---|---|---|
|
Frameno |
I |
Увеличивается каждый раз, когда пользователь выбирает New Frame (Новый кадр). |
|
Objno |
I |
Увеличивается каждый раз, когда линия вводится в кадр. |
|
X1 |
I |
Начальная координата X для линии. |
|
X2 |
I |
Конечная координата X для линии. |
|
Y1 |
I |
Начальная координата Y для линии |
|
Y2 |
I |
Конечная координата Y для линии. |
Проигрывание кадров
Приведенный ниже программный код проигрывает кадры, повторно использует таблицу в другой рабочей области, выбирает вторую рабочую область и переходит к следующему кадру:
Скопировать код | |
|---|---|
USE (lcTable) AGAIN IN 0 ALIAS shadow SELECT shadow LOCATE FOR frameno # &lcTable..frameno | |
Переменная nBetween определяет, сколько промежуточных линий рисуется на форме между линией в одном кадре и соответствующей линией в другом кадре.
Скопировать код | |
|---|---|
FOR nb = 1 TO nBetween | |
Внутри цикла FOR код сканирует таблицу для поиска всех линий, связанных с кадром и вычисляет координаты для промежуточных линий, например:
Скопировать код | |
|---|---|
nx1 = frames.x1 + nb * (shadow.x1 - frames.x1) / nBetween ny1 = frames.y1 + nb * (shadow.y1 - frames.y1) / nBetween | |
Затем код рисует каждую промежуточную линию и после ожидания в полсекунды (WAIT .05) очищает форму и продолжает цикл.
Скопировать код | |
|---|---|
THISFORMSET.frmAnimation.line(nx1,ny1,nx2,ny2) | |
Смотрите также
Задачи
Образец рисования линий и контуров на формеОбразцы решений