Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln? (https://www.delphipraxis.net/191924-hoehe-eines-mit-filltext-firemonkey-gezeicheten-textes-ermitteln.html)

Mavarik 6. Mär 2017 19:00

AW: Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln?
 
Zitat:

Zitat von sko1 (Beitrag 1363345)
Hast Du dafür bitte mal einen Codeschnipsel?

Delphi-Quellcode:
  R := RectF(0,0,Memo.ViewportSize.Width,20000);
  Memo.Canvas.MeasureText(R,Memo.Text,true,[],TTextAlign.Leading,TTextAlign.Leading);

Sowas? R Hat dann die Höhe.

sko1 7. Mär 2017 05:55

AW: Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln?
 
Nein, die Verwendung von MeasureText ist mir klar, funktioniert nur unter Android nicht!

Meine Frage nach dem Codeschnipsel bezog sich auf TTextLayout...

Ciao
Stefan

Sherlock 7. Mär 2017 07:18

AW: Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln?
 
Na, ist eigentlich recht einfach bis auf den ersten Schritt, wo man nämlich das TTextLayout per TTextLayoutManager erzeugt.

Die OH hat dazu sogar ein Beispiel: http://docwiki.embarcadero.com/RADSt...von_FireMonkey
Das TTextLayout kennt auch WordWrap und damit ist alles drin, was Du brauchst. Die Größe des entstandenen Texts kannst schließlich Du über die TextRect Property abfragen.

Sherlock

sko1 7. Mär 2017 07:36

AW: Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln?
 
Danke, ich habe es gefunden und es funktioniert, nur mit folgender Einschränkung:

Ich zeichne auf ein TImage (besser auf dessen Bitmap), ermittle die Texthöhe, zeichne weiter usw.
Jetzt bin ich aber leider darauf gestoßen, dass bei Firemonkey die Bitmapgröße limitiert ist, so dass ich nach bei ca. 130 Einträgen nicht mehr weiterkomme ("Bitmap zu groß").

Ein Richedit gibt es bei Firemonkey nicht, ich brauche aber gemischt normalen und fetten Text.
Lauter einzelne Labels erzeugen und positionieren widerstebt mir weil das ebenfalls auf dem Handy mehr als zähflüssig wird.

So langsam gehen mir die Ideen aus, wie ich meine Textausgabe realisieren kann!

Hat jemand dazu vielleicht eine Idee?

Ciao
Stefan

Sherlock 7. Mär 2017 07:37

AW: Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln?
 
Diese Bitmap-Limitierung gilt auch für VCL (eventuell mit anderen Dimensionen), und ich werde in bälde auch daran zu knabbern haben. Man behilft sich dann, indem man mehrere Bitmaps aneinander klebt.

Sherlock

sko1 7. Mär 2017 09:58

AW: Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln?
 
Zitat:

Man behilft sich dann, indem man mehrere Bitmaps aneinander klebt.
Das habe ich inzwischen probiert, unter Windows kein Problem, unter Android könnte schon mal der Speicher knapp werden, wird ausserdem extrem langsam.

Meine Lösung, die ich jetzt umgesetzt habe:
Im OnPaint der Komponente male ich jetzt meine Texte auf den Canvas, dafür braucht man keine Bitmap erzeugen und es gibt (bis jetzt jedenfalls) keine "Mengenbeschränkung", so dass ich auch 800 Texte zeichnen kann, das Scrolling wird dann etwas träger aber bei normaler Verwendung absolut problemlos.

Für die Positionierung jetzt das TTextLayout und alles ist schick ;-)

Ciao
Stefan

Sherlock 7. Mär 2017 10:19

AW: Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln?
 
Gratuliere!

Sherlock

Mavarik 7. Mär 2017 11:30

AW: Höhe eines mit FillText in Firemonkey gezeicheten Textes ermitteln?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von sko1 (Beitrag 1363386)
Hat jemand dazu vielleicht eine Idee?

Ja...

Ich render mit meiner Engine 5-8 A4 Seiten (mehr brauche ich nicht, geht aber) Ich setze einfach Bitmap an Bitmap auf eine Scrollbox...

Screenshoot von der Windows-Version (ging jetzt einfacher) aber geht auf allen Plattformen...

Ich kann auch Blocksatz.
Und auch Fonts und Farbe!

Die Daten kommen aus eine XML-Datei und werden per TCP-IP übertragen und in der App in einer Datenbank gespeichert. Gent natürlich auf per App-Teathering.

Die Engine hat ca. 2500 LOC...

Mavarik


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 Uhr.
Seite 2 von 2     12   

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