реклама
Бургер менюБургер меню

Виталий Донцов – Программирование для Android и работа с датчиками в среде Delphi 11 (страница 18)

18

Stroke.Kind:=TBrushKind.Solid;

Stroke.Color:=TAlphaColors. Blue;

Stroke.Thickness:=2;

DrawPath (Path,1);

finally

endScene;

end;

Начало рисования ограничиваем Edit1.Text = «1», который контролируем Button.

Для рисования используем свойство OnPaint для Button:

procedure TForm1.Button3Paint (Sender: TObject; Canvas: TCanvas;

const ARect: TRectF);

var

P: TPointF;

i: Integer;

begin

P.X:= 0;

P.Y:= StrToInt(Memo1.Lines [0]);

Path.MoveTo (P);

for i:= 0 to Memo1.Lines.Count – 2 do

begin

P.X:= i*4;

P.Y:= PlotGrid1.Height – StrToInt(Memo1.Lines [i]);

Path.LineTo (P);

end;

end;

Результат можно видеть на рисунке: накапливаемые данные тут же отражаются на графике (перерисовывается график для данных в Memo пока Edit1.Text = «1»).

Рис. 33. Рисование графика компонентом Path: TPathData.

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

11.5. Компонент построения графиков Chart

В Delphi Android имеются специальный компонент для построения графиков – Chart. В компоненте Chart многие десятки свойств и функций, но работать достаточно с несколькими. Нажимаем щелчком мыши по компоненту Chart и переходим во вкладку Series, выбираем кнопку Add: открывается список всех доступных графиков, выбираем, например, первый тип графика (линейный) – Line.

Здесь же видны другие первостепенные свойства Chart:

– Общие; – Оси, – Заглавия, – Легенды и пр.

Внутри группы открываются их подробные настройки, которые можно делать также из Object Inspector и программно.

Основная функция графика – добавление данных:

AddXY (AXValue, AYValue: Double; ALabel: String; AColor: TColor);

Chart1.Series[1].AddXY (x,y,» ',TAlphaColors.Red); //Например

Найти значение Y по X (от 0 до Х макс. видимого графика):

Y:= Chart1.Series [0].YValue [X]; или: Y:= Series1.YValue [X].

Следует учитывать, что: Series1 равна Chart1.Series [0].

Chart1.SaveToBitmapFile(FileName.jpg); //Сохранить график в файл

Series1.Delete (X); //Удалить точку X графика.

Series1.MaxYValue и *.MinYValue; // Y Max и Min видимого графика

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

Ymin:= 1000000; Ymax:= 0;

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

begin

if Ymax <Round(Chart1.Series [0].YValue [X]) 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, позволяющее рисовать на экране в ответ на прикосновение и движение. Для этого: