So zeichne ich unter FMX (Win) Rechtecke auf einen Formularcanvas.
Vielleicht findest Du da einen Hinweis...
Delphi-Quellcode:
procedure PaintLayoutRects;
var
I: Integer;
iRegion: TssRegion;
procedure FR(R: TssRect);
begin
PaintLayoutCanvas.FillRect(TRectF.Create(R.Left, R.Top, R.Width, R.Height),
0, 0, [], 1, TCornerType.ctBevel);
end;
procedure PF;
begin
PaintLayoutCanvas.DrawRect(TRectF.Create(0, 0, PaintLayout.Width,
PaintLayout.Height), 0, 0, [], 1, TCornerType.ctBevel);
end;
procedure PR(R: TssRect);
begin
PaintLayoutCanvas.DrawRect(TRectF.Create(R.Left, R.Top, R.Right, R.Bottom),
0, 0, [], 1, TCornerType.ctBevel);
end;
begin
if (not Assigned(PaintLayout)) or (not Assigned(PaintLayoutCanvas)) then
Exit;
PaintLayoutCanvas.BeginScene;
PaintLayoutCanvas.Clear(claWhitesmoke);
PaintLayoutCanvas.Stroke.Kind := TBrushKind.bkSolid;
PaintLayoutCanvas.Stroke.Color := claLime;
PaintLayoutCanvas.StrokeThickness := 1;
PF;
for I := 0 to PaintLayout.Regions.Count - 1 do
begin
iRegion := PaintLayout.Regions.Items[I];
PR(iRegion.NewRect);
end;
PaintLayoutCanvas.EndScene;
end;
Nachtrag: Ach so, Image ...
Das wird sicherlich ständig neu gezeichnet sobald eine Mausaktion triggert.
Insofern kann es sein, dass Deine Ellipse gezeichnet wird, dann aber sofort das Image (das Bild des Image) wieder neu dargestellt wird.
Auf einen Canvas zu zeichnen ist dem Fall nicht der richtige Weg.