Ymax и Ymin в пределах окна графика можно и вычислять:

Ymin:= 1000000; Ymax:= 0;

for X:= 1 to Chart1.BottomAxis.Maximum do

begin

if Ymax then Ymax:= Round (Chart1.Series [0].YValue [X]);

if Ymin> Round(Chart1.Series [0].YValue [X]) then Ymin:= Round (Chart1.Series [0].YValue [X]);

end;

Chart1.LeftAxis.Maximum:= Ymax; (отключить автомасштаб!)

Chart1.LeftAxis. Minimum:= Ymin;

Вычислять положение точки Х для точки экрана:

Label1.Text :-= FloatToStr(Series1.MaxYValue);//Значение Ymax

Label1.Position. X:= Series1.CalcXPos (Round (Series1.MaxYValue)); //Положение метки на экране в точке Х соответствующей Значению Ymax.


Рис. 34. Установка параметров графика Chart.

11.6. КОМПОНЕНТЫ 3D ГРАФИКИ

В Delphi для Android 10 и 11, как и в более ранних версиях, предусмотрена также 3-х мерная графика, где представлены компоненты 3D-Shapes, с возможностью изменять цвет и структуру поверхности – группа Materials.

Для разработки 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)