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

Читать онлайн.
Название Программирование для Android и работа с датчиками в среде Delphi 11
Автор произведения Виталий Иванович Донцов
Жанр
Серия
Издательство
Год выпуска 0
isbn 9785006566965



Скачать книгу

X+100;

      p2.Y:=Image1.Position. Y+150;

      if Canvas.BeginScene =true then

      try

      Canvas.Stroke.Kind:=TBrushKind.Solid;

      Canvas. DrawLine (p1,p2,10);

      finally

      Canvas. EndScene;

      endend;

      var

      p1,p2:TPoint;

      begin // Рисует линию

      p1.X:= 40;

      p1.Y:= 40;

      p2.X:= 100;

      p2.Y:= 100;

      Image1.Canvas.BeginScene;

      Image1.Canvas. DrawLine (p1,p2,1.0);

      Image1.Canvas. EndScene;

      end;

      //Рисует квадрат

      Var

      R: Trect;

      begin

      R. Left:= 30;

      R.Top:= 30;

      R. Right:= 100;

      R.Bottom:= 100; // Y1

      Image1.Canvas.BeginScene; //создание графической сцены

      Canvas.Fill.Kind:= TBrushKind. bkSolid; // Тип линии

      Canvas.Fill.Color:= TAlphaColors. Blue; // Цвет закраски области

      Image1.Canvas.DrawRect(r,5,5,[TCorner.TopLeft,

      TCorner.BottomLeft],0.8);

      Image1.Canvas. EndScene; //завершение сцены и вывод изображения на экран

      end;

      DrawRect(r,5,5,[TCorner.TopLeft, TCorner.BottomLeft],0.8) – включает указания на область вывода прямоугольника (r), радиусы закругления углов (5,5) с указанием какие именно углы следует закруглить [TCorner.TopLeft, TCorner.BottomLeft] и указать степень прозрачности фигуры (0.8).

      Для прорисовки на поверхности холста графического образа следует создать Bitmap: метод DrawBitmap (const ABitmap: TBitmap; const SrcRect, DstRect: TRectF; const AOpacity: Single; const HighSpeed: Boolean = False):

      var

      ABitmap: TBitmap;

      aWidth, aHeight: integer;

      SrcRect, DstRect: TRectF;

      begin

      with Form1.Canvas do

      begin

      ABitmap:= TBitmap.Create;

      aWidth:= ABitmap. Width;

      aHeight:= ABitmap. Height;

      SrcRect:= RectF (0,0,aWidth, aHeight);

      DstRect:= SrcRect;

      if BeginScene then

      begin

      DrawBitmap (ABitmap, SrcRect, DstRect,1,true);

      EndScene;

      end;

      end; end;

      Изображение ABitmap полностью или его части представлено SrcRect, место вывода и размеры – в параметре DstRect.

      Параметр HighSpeed позволяет предпочтение скорости (true) или качеству (false) вывода.

      Фрагмент исходного рисунка, можно ограничить в SrcRect. Управляя размерами области DstRect, можем увеличить или уменьшить рисунок.

      Метод Paint: PaintTo (const ACanvas: TCanvas; const ARect: TRectF; const AParent: TFmxObject = nil); пример: рисуем увеличенную в 2 раза кнопку:

      Form1.Canvas.BeginScene;

      Button1.PaintTo(Form1.Canvas, RectF (0,0,Button1.Width* 2,Button1. Height*2));

      Form1.Canvas. EndScene;

      Надо отметить, что если в событии OnPaint Формы все рисуется прекрасно, то при попытке сделать это же при нажатии кнопки можно получить что угодно, а обычно ничего, или кратковременный вывод рисунка на экран, который тут же исчезает. Чтобы получить устойчивую фигуру нужно сделать довольно много, в отличие от обычного Delphi 7. На примере компонента Path, позволяющего рисовать полилинии:

      Вначале определяется глобальная переменная Path:

      var

      Form1: TForm1;

      Path: TPathData;

      Затем при открытии формы создается траектория Path:

      procedure TForm1.FormCreate (Sender: TObject);

      begin

      Path:= TPathData.Create; //Создаем траекторию

      end;

      Определяется событие OnPaint для Image (или для Form1):

      procedure TForm1.Image1Paint (Sender: TObject; Canvas: TCanvas; const ARect: TRectF);

      begin

      with Canvas do

      if (Path.Count> 0) and (BeginScene) then

      try

      Clear (TAlphaColorRec. White);

      Stroke.Kind:= TBrushKind.Solid;

      Stroke.Thickness:= 1;

      DrawPath