"Echte" Höhe von Ausgabetext ermitteln

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

"Echte" Höhe von Ausgabetext ermitteln

Beitrag 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
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag 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.
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Beitrag 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 :)
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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 ~_~
Zuletzt geändert von MVXA am 26.01.2005 00:23, insgesamt 1-mal geändert.
Bild
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Beitrag 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 ;)
Kekskiller
Beiträge: 752
Registriert: 14.09.2004 21:39
Kontaktdaten:

Beitrag von Kekskiller »

Höchstens Api oder direkt im Textspeicher nachsehen, sonst nicht.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
ralle
Beiträge: 88
Registriert: 29.11.2004 17:50
Wohnort: Berlin

Beitrag von ralle »

Vielen Dank für den Tip mit der Library! :) Werd ich mir mal anschauen.

greetz ralle :)
Antworten