AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

FireMonkey zeichnen auf Circle-Komponente...

Ein Thema von Thunder1968 · begonnen am 4. Okt 2014 · letzter Beitrag vom 5. Okt 2014
Antwort Antwort
Thunder1968

Registriert seit: 19. Mai 2009
8 Beiträge
 
#1

FireMonkey zeichnen auf Circle-Komponente...

  Alt 4. Okt 2014, 17:53
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#2

AW: FireMonkey zeichnen auf Circle-Komponente...

  Alt 4. Okt 2014, 18:16
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.


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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 4. Okt 2014 um 18:23 Uhr)
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#3

AW: FireMonkey zeichnen auf Circle-Komponente...

  Alt 4. Okt 2014, 19:26
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 )?
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ß
Volker Zeller
  Mit Zitat antworten Zitat
Thunder1968

Registriert seit: 19. Mai 2009
8 Beiträge
 
#4

AW: FireMonkey zeichnen auf Circle-Komponente...

  Alt 5. Okt 2014, 13:43
Na Logo... Vielen Dank für den Tip. Auf das mit dem neu zeichnen hätte ich ja auch selbst drauf kommen können... Manchmal sieht man halt den Wald vor lauter Bäumen nicht.

Vielen Dank an Euch!!!
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:07 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