Программирование для Android и работа с датчиками в среде Delphi 11 - страница 26
Для разработки 3D графики нужно использовать шаблон 3D Application или Viewport 3D. Тип проекции (свойство Projection) отображает в вариантах Camera (начало координат в центре экрана, координата Y снизу вверх), или Screen (координаты начинаются как обычно с верх- него левого угла экрана).
Вид объекта (глубина и ее направление) зависит от положе ния на экране. Координата Z приближает или отодвигает объект. Изменение угла отклоняет: для +X вперед, —Х назад; для Y соответственно вправо и влево: +Z поворачивает против часовой стрелки, —Z по часовой стрелке. Координаты объекта отсчитываются от его центра. Смысл всего этого для смартфонов проблематичен.
11.7. АНИМАЦИЯ ОБЪЕКТОВ
У многих компонентов есть свойство анимации (как и углаповорота). Это позволяет динамически придавать им различные функции – изменять положение, поворот, менять цвет. Также в группе Animation находится набор компонентов для придания анимации практически любым компонентам и многим свойствам (имеющим в Инспекторе объектов флажок – кадрфильма).
Для роста объекта можно менять его свойство Height, для изменения положения: Position. X и Position. Y, для поворота Rotation Center и Rotation Angle; соответственно, можно менять цвет – Color.
Компоненты группы Animation такие как: FloatAnimation и PathAnimation двигают объект от StartValue до StopValue по зависимости, определяемой свойством Interpolation (linear или exponent) и в течение секунд – Duration, с задержкой Delay. AutoReverse возвращает объект обратно по той же траектории, а Loop делает это циклически.
11.8. ВОЗМОЖНОСТЬ РИСОВАНИЯ НА ЭКРАНЕ
Для формы существует в Events событие OnTouch, позволяющее рисовать на экране в ответ на прикосновение и движение. Для этого:
Создаем глобальную переменную:
var
Form1: TForm1;
Path: TPathData;
При открытии на OnCreate в Form1 создаем траекторию:
Path:=TpathData.Create;
Подготавливаем сцену для визуализаци в OnPaint и Form1:
with Canvas do
if (Path.Count> 0) and (BeginScene) then
try
Stroke.Kind:=TBrushKind.Solid;
Stroke.Color:=TAlphaColors. Blue;
Stroke.Thickness:=2;
DrawPath (Path,1);
finally
endScene;
end;
Формируем событие OnTouch в Form1:
case Action of
TTouchAction.Down: begin
Path.MoveTo (Touches [0].Location);
end;
TTouchAction.Move: begin
Path.LineTo (Touches [High (Touches)].Location);
FormPaint(Sender,Form1.Canvas,Form1.ClientRect);
end;
В итоге движение пальца рисует синию линию (полилиния – Path).
Для изменения цвета и размера линии нужно ввести компоненты SpinBox и ColorListBox (обеспечивает выбор до 200 цветов), поместив их на Panel. Также нам понадобится Button для стирания рисунка:
Path.Clear; // Очистка компонента – полилиния (Path)
Path:=TpathData.Create; // Создание заново компонента Path
SpinBox1.Value:= 2; // Исходное значение величины кисти
ColorListBox1.Color:= TAlphaColors. Black; //Исходный цвет – черный
Важно: OnTouch реагирует на любое прикосновение к экрану, и чтобы рисунок не выводился на области Panel с компонентами настройки, ограничиваем выведение рисунка областью выше Panel:
if Touches [0].Location. Y
begin
case Action of
TTouchAction.Down: begin……………..
Для перехода в область настройки достаточно коснуться этой области внизу экрана (осторожно, чтобы не закрыть все приложение основными кнопками смартфона «