Seite 1 von 1

"Echte" Höhe von Ausgabetext ermitteln

Verfasst: 25.01.2005 23:10
von ralle
Moin.

Ich möchte einen Text in einen genau angepassten Sprite zeichnen, um diese dann später anstelle der langsamen Zeichenfunktionen auf den Bildschirm zu bringen. Nun habe ich Probleme bei der Errechnung der Spritegrößen:
- Um die Breite in Pixeln eines Strings zu ermitteln gibt es ja die Funktion TextLength(...). -> wunderbar, passt genau!
- Für die Texthöhe könnte man ja die Angabe Size bei laden eines Fonts annehmen... -> probiert man dies aus wird man feststellen, dass dies nicht stimmt, da der Text meist höher ist, als die ursprünglich geladene Größe der Schriftart. Dies hängt mit all den diversen Sonderzeichen zusammen, welche natürlich höher werden können als ein "normaler" Buchstabe.

Nun meine Frage: Wie ermittle ich die korrekte Texthöhe, um die Größe meines Sprites korrekt zu dimensionieren?

Hab die Suchfunktion des Forums schon eifrig genutzt, jedoch leider nichts gefunden...

MfG

Ralle

Verfasst: 25.01.2005 23:22
von Kekskiller
Mh... eigentlich bräuchte man doch nur nachgucken, wo genau der erste
Piel in Farbe anfängt, oder? Denn, schließlich willst du ja die tatsächliche Größe rausfinden.
Und da der dargestellte Text eh nur aus zwei Farben besteht, bräuchtest
du nur ein vorher erstelltes Bild mit den "unnormalen" Größe abtasten und
prüfen, auf welcher Y-Ebene der erste Farbpixel liegt. Dann auch noch von
unten und der Abstand zwischen ihnen ist die richtige Größe. Dann nur von
der oberen Pixelposition und mit der ausgerechneten Breite kopieren und
zack ist es fertig. Natürlich müsstest du auch erstmal dies Prozedur überall
rübergehen lassen, was natürlich Zeit beansprucht.

Verfasst: 25.01.2005 23:57
von Kaeru Gaman
wenn ich mich nicht irre, ist die pt-größe einer schriftart die anzahl punkte
von der satzlinie bis zum oberen ende.

eigentlich müsste die gesamthöhe ein festes vielfaches der pt-größe sein.
(*1.4 oder sowas)

btw:
gibts dein avatar-bild auch in groß und ohne den schwarzen fleck in der mitte?
kannst mir ja mal ne PN schicken, wenn du magst...

Verfasst: 26.01.2005 00:18
von blbltheworm
Das Problem gab es schonmal
http://www.robsite.de/php/pureboard/viewtopic.php?t=694.
Dort kannst du auch die Lösung des Problems finden.
Oder wenn du direkt zur Lösung möchtest
http://www.robsite.de/php/pureboard-arc ... textheight.

Verfasst: 26.01.2005 00:18
von ralle
Kekskiller hat geschrieben:Mh... eigentlich bräuchte man doch nur nachgucken, wo genau der erste
Piel in Farbe anfängt, oder? Denn, schließlich willst du ja die tatsächliche Größe rausfinden.
Und da der dargestellte Text eh nur aus zwei Farben besteht, bräuchtest
du nur ein vorher erstelltes Bild mit den "unnormalen" Größe abtasten und
prüfen, auf welcher Y-Ebene der erste Farbpixel liegt. Dann auch noch von
unten und der Abstand zwischen ihnen ist die richtige Größe. Dann nur von
der oberen Pixelposition und mit der ausgerechneten Breite kopieren und
zack ist es fertig. Natürlich müsstest du auch erstmal dies Prozedur überall
rübergehen lassen, was natürlich Zeit beansprucht.
Und genau diese Zeit habe in an dieser Stelle nicht :D. Gibt es denn keine PB-Interne Methode, um dies zu bestimmen (ich hab keine gefunden... heißt ja aber nicht, dass es keine gibt ;)).

ralle :)

Verfasst: 26.01.2005 00:21
von MVXA
Ich meine mich errinern zu können das es im Pure-Board Archiv mal ein Codesnippet gab mit dem man dies über den API Web berwekstelligen konnte. Leider habe ich keine Zeit um danach zu suchen da ich gleich meine Magenmedizin nehmen muss und dann schlafen gehe. Manche Menschen müssen ins Praktikum ~_~

edit: Doof von mir. Hab ich ein klein Post übersehn ~_~

Verfasst: 26.01.2005 00:21
von ralle
blbltheworm hat geschrieben:Das Problem gab es schonmal
http://www.robsite.de/php/pureboard/viewtopic.php?t=694.
Dort kannst du auch die Lösung des Problems finden.
Oder wenn du direkt zur Lösung möchtest
http://www.robsite.de/php/pureboard-arc ... textheight.
Hmmm, da wünsch ich mir doch lieber einen PB-Internen Befehl ;)

Verfasst: 26.01.2005 00:22
von Kekskiller
Höchstens Api oder direkt im Textspeicher nachsehen, sonst nicht.

Verfasst: 26.01.2005 08:25
von DarkDragon
Guten Morgen,

Die X2D Library kann die echte Höhe eines Zeichensatzes mittels der Funktion
X2D_GetFontHeight()

Syntax

Height.l = X2D_GetFontHeight()
Description

Returns the line-heigth of the current font used by PureBasic.
Attention: This represents not the same value as the one given to the LoadFont()-procedure.
herausfinden.
Die X2D-Lib ist von Mirko Ellinger.

Verfasst: 26.01.2005 20:48
von ralle
Vielen Dank für den Tip mit der Library! :) Werd ich mir mal anschauen.

greetz ralle :)