Виталий Донцов – Программирование для Android и работа с датчиками в среде Delphi 11 (страница 15)
Для прорисовки на поверхности холста графического образа следует создать
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;
Изображение
Параметр
Фрагмент исходного рисунка, можно ограничить в
Метод
Form1.Canvas.BeginScene;
Button1.PaintTo(Form1.Canvas, RectF (0,0,Button1.Width* 2,Button1. Height*2));
Form1.Canvas. EndScene;
Надо отметить, что если в событии
Вначале определяется глобальная переменная
var
Form1: TForm1;
Path: TPathData;
Затем при открытии формы создается траектория
procedure TForm1.FormCreate (Sender: TObject);
begin
Path:= TPathData.Create; //Создаем траекторию
end;
Определяется событие
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 (Path,1); //Рисовать Path при обращении
finally
EndScene;
end;
Собственно рисуем линию на
procedure TForm1.Button1Click (Sender: TObject);
var
p,p1:TPointF;
begin
p.X:= Image1.Position. X;
p.Y:= Image1.Position. Y;
Path.Clear; // Очистить Path
Path.MoveTo (p1); // Начальная точка рисования
p1.X:= Image1.Position. X+100;
p1.Y:= Image1.Position. Y+150;
Path.LineTo (p1); // Линия от начальной точки
Path.ClosePath; // Оконачание создания Path
// Вывод созданной Path в Image
Image1.OnPaint(Sender,Image1.Canvas,Image1.ClipRect);
end;