Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Position Elemente in TImage ???

  Alt 20. Sep 2020, 13:41
Ja, die FMX-Objekte selber haben nicht jeweils einen eigenen Canvas, sondern teilen sich den Anzeigebereich mit der Form.

Es ist der falsche Ansatz, von außen auf die Anzeige-Elemente zeichnend zuzugreifen (also hier im Button-Click-Event), da diese sich ja auch selbst zeichnen müssen, wenn man ein anderes Formular über das Anzeige-Element schiebt.

Daher besser das Painting-Event des Controls verwenden, da erhält man auch direkt den Anzeigebereich übergeben.

So funktioniert es (mit Deinem ersten Ansatz):

Delphi-Quellcode:
procedure TForm33.Image1Painting(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
var
  MyRect: TRectF;
  c : Tcanvas;
begin
  MyRect.Create(1, 1, 150, 200);
  c := canvas; //Image1.Canvas;
  c.BeginScene;
  c.Stroke.Kind := TBrushKind.Solid;
  c.Stroke.Color := TAlphaColors.Blue;
  c.Stroke.Thickness := 2;
  c.DrawRect(MyRect, 10, 10, AllCorners, 1.0);
  c.EndScene;
end;
Miniaturansicht angehängter Grafiken
image.png  

Geändert von Harry Stahl (20. Sep 2020 um 23:06 Uhr)
  Mit Zitat antworten Zitat