Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   FireMonkey zeichnen auf Circle-Komponente... (https://www.delphipraxis.net/182151-firemonkey-zeichnen-auf-circle-komponente.html)

Thunder1968 4. Okt 2014 17:53

FireMonkey zeichnen auf Circle-Komponente...
 
Hallo zusammen,

vielleicht kann mir jemand helfen oder einen Tip geben. Ich habe versucht auf einem FireMonkey Control (Circle1) eine Linie zu zeichnen. Leider funktioniert dieses unter XE3 nicht. Aber unter XE5 geht es. Dann habe ich mir die Trial von XE7 installiert. Auch unter XE7 funktioniert dieses nicht. Der folgende Code funktioniert aber unter XE5. Was mache ich falsch bzw. was muss ich beachten oder hat sich evtl. geändert??? :(

Vielen Dank für eine hilfreiche Information...



procedure TForm1.CornerButton1Click(Sender: TObject);
var
Data : Single;
P1, P2 : TPointF;

begin
Circle1.Canvas.BeginScene;
P1.X:= Circle1.Height / 2;
P1.Y:= Circle1.Width / 2;
P2.X:= 0;
P2.Y:= 0;
Circle1.Canvas.Stroke.Color := claBlue;
Circle1.Canvas.StrokeDash := TStrokeDash.sdSolid;
Circle1.Canvas.Stroke.Kind:= TBrushKind.bkSolid;
Circle1.Canvas.StrokeThickness := 3.0;
Circle1.Canvas.DrawLine(P1, P2, 0);

P1.X:= 0;
P1.Y:= 0;
P2.X:= Circle1.Height;
P2.Y:= Circle1.Width;
Circle1.Canvas.Stroke.Color := claBlue;
Circle1.Canvas.StrokeDash := TStrokeDash.sdSolid;
Circle1.Canvas.Stroke.Kind:= TBrushKind.bkSolid;
Circle1.Canvas.StrokeThickness := 1.0;
Circle1.Canvas.DrawLine(P1, P2, 0);
Circle1.Canvas.EndScene;
end;

himitsu 4. Okt 2014 18:16

AW: FireMonkey zeichnen auf Circle-Komponente...
 
Du versuchst "einmalig" auf eine Komponente zu zeichnen, welche das Verhalten hat sich selber ab und an mal neu zu zeichnen und Deines dabei zu übermalen?
Selber Schuld, wenn es nicht funktioniert, bzw. womöglich bereits nach 'ner halben Millisekunde schon wieder übermalt wurde.

Entweder du malst auf eine Komponente, welche dein gemaltest speichert (z.B. in das Bitmap eines TImage, oder so ähnlich),
oder du malst auf eine Komponente, welche für sowas gedacht ist TPaintBox (gibt es die noch im FMX? bin mir grade nicht sicher) und da wird natürlich im OnPaint gezeichnen
oder du überschreibst die Paint-Methode deines TCircle und zeichnest dort drin, also genauso wie bei der PaintBox. :roll:


Falsch machst du, dap du vergessen hast den [delphi]...[/delphi]-Code um deinen Quellcode zu machen.
Und psssst, du hast deine Data-Variable vergessen zu benutzen. :zwinker:

Volker Z. 4. Okt 2014 19:26

AW: FireMonkey zeichnen auf Circle-Komponente...
 
Hallo,

Zitat:

[...] Leider funktioniert dieses unter XE3 nicht. Aber unter XE5 geht es. Dann habe ich mir die Trial von XE7 installiert. Auch unter XE7 funktioniert dieses nicht. Der folgende Code funktioniert aber unter XE5 [...]
Kann ich jetzt leider nicht mit all den angegebenen Versionen nachprüfen.

Hast Du es mal so versucht (OnPaint-Event der Circle-Komponente anstatt ButtonClick sonst ist die Linie nach dem nächsten Zeichnen des Forms futsch :wink:)?
Delphi-Quellcode:
procedure TForm1.Circle1Paint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
var
  P1, P2 : TPointF;
begin
  Canvas.BeginScene;
  try
    P1.X := ARect.Left;
    P1.Y := ARect.Top;
    P2.X := ARect.Width;
    P2.Y := ARect.Height;
    Canvas.Stroke.Color := TAlphaColorRec.Blue;
    Canvas.StrokeDash := TStrokeDash.sdSolid;
    Canvas.Stroke.Kind:= TBrushKind.bkSolid;
    Canvas.StrokeThickness := 1.0;
    Canvas.DrawLine (P1, P2, 0.5) // <-- AOpacity <> 0!
  finally
    Canvas.EndScene
  end
end;
Gruß

Thunder1968 5. Okt 2014 13:43

AW: FireMonkey zeichnen auf Circle-Komponente...
 
Na Logo... :thumb: Vielen Dank für den Tip. Auf das mit dem neu zeichnen hätte ich ja auch selbst drauf kommen können... :oops: Manchmal sieht man halt den Wald vor lauter Bäumen nicht. :wall:

Vielen Dank an Euch!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz