AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX.Graphics.TCanvas.FillText drehen

Ein Thema von himitsu · begonnen am 3. Sep 2025 · letzter Beitrag vom 5. Sep 2025
Antwort Antwort
Benutzerbild von himitsu
himitsu

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

FMX.Graphics.TCanvas.FillText drehen

  Alt 3. Sep 2025, 13:36
Tachchen,

gibt es wirklich keine Möglichkeit für TCanvas.FillText (FMX) einen Winkel anzugeben?

* ja, beim Skia geht es, aber Skia für OnCustomDraw einer Nicht-Skia-Komponente?
* und ansonsten fand ich nur Varianten auf ein Bitmap zu schreiben, das dann zu drehen und anschließend auf den eigentlichen Canvas zu kopieren

* und auf ein TImage zu malen und das in der Anzeige zu drehen (RotationAngle), ist hier auch keine Lösung (z.B. den Text einer Caption/Zelle in Grid)


90°, 180°, 270° wären für den Anfang ausreichend, aber natürlich gibt es bestimmt irgendwelche, die einen freien Winkel nuzen würden wollen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
UliBru

Registriert seit: 10. Mai 2010
160 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX.Graphics.TCanvas.FillText drehen

  Alt 3. Sep 2025, 13:43
Die KI der Google-Suche spuckt dazu aus

Delphi-Quellcode:
// Example for FireMonkey
var
  Angle: Single;
  R: TRectF;
  Matrix: TMatrix;
begin
  Canvas.Fill.Color := TAlphaColors.Black;
  Angle := -ArcTan2(ClientHeight, ClientWidth); // Calculate angle
  R := ClientRect;
  Matrix := CreateRotationMatrix(Angle);
  Canvas.SetMatrix(Matrix); // Apply the rotation matrix
  Canvas.FillText(R, 'Rotated FMX Text', False, 1, [], TTextAlign.taLeading, TTextAlign.taTrailing);
end;
Ich hab's nicht getestet, da ich derzeit kein FMX verwende.

Grüsse
Uli
Er wollte so richtig in Delphi einsteigen. Nun steckt er ganz tief drin ...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FMX.Graphics.TCanvas.FillText drehen

  Alt 3. Sep 2025, 13:54
paar kleine Änderungen ....
Delphi-Quellcode:
uses
  System.Math, System.Math.Vectors; // FMX.Filter.Custom: AffineCreateRotationMatrix

procedure TForm28.FormPaint(Sender: TObject; Canvas: TCanvas; const ARect: TRectF);
var
  Angle: Single;
  R: TRectF;
  Matrix: TMatrix;
begin
  Canvas.Fill.Color := TAlphaColors.Black;
  Angle := -ArcTan2(ClientHeight, ClientWidth); // Calculate angle
  R := ClientRect;
  Matrix := CreateRotationMatrix(Angle);
  Canvas.SetMatrix(Matrix); // Apply the rotation matrix
  Canvas.FillText(R, 'Rotated FMX Text', False, 1, [], TTextAlign.Leading, TTextAlign.Trailing);
end;
aber CreateRotationMatrix gibt es nicht, oder nicht mehr (und AffineCreateRotationMatrix ist wohl was Anderes)

und die Hilfe
https://docwiki.embarcadero.com/Libr...nvas.SetMatrix
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
687 Beiträge
 
Delphi 12 Athens
 
#4

AW: FMX.Graphics.TCanvas.FillText drehen

  Alt 3. Sep 2025, 14:00
darüber finde ich aber wiederum System.Math.Vectors.TMatrix und da gibt es https://docwiki.embarcadero.com/Libr...CreateRotation

vllt hilft dir das?
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de

Geändert von joachimd ( 3. Sep 2025 um 14:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FMX.Graphics.TCanvas.FillText drehen

  Alt 3. Sep 2025, 14:43
Dann schau ich heute abend daheim nochmal in Ruhe danach.

Hatte vor mehreren Tagen nach sowas gesucht und es dann erstmal aufgegeben/gelassen.
Aber, als ich gestern Abend nochmal an jenem Projekt was geändert hab, war mir das wieder in den Sinn gekommen (hatte angefangen eine DemoForm zu basteln, wo auch Labels drauf sind)
und ich dachte ich frag mal ... vielleicht findet sich ja was für heut Abend (oder Wochenende).
https://www.delphipraxis.net/217731-...ml#post1551367
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
687 Beiträge
 
Delphi 12 Athens
 
#6

AW: FMX.Graphics.TCanvas.FillText drehen

  Alt 3. Sep 2025, 14:47
müsste vermutlich über

  Canvas.SetMatrix(Canvas.Matrix.CreateRotation(Angle)); zu lösen sein.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz