![]() |
Effektive Höhe Buchstaben und Canvas.TextHeight
Hallo
Mit Canvas.TextHeight kann ich die Schrifthöhe vor dem Zeichnen abfragen. Diese entspricht aber nicht genau der Distanz von oberster bis zur untersten Stelle eines Buchstabens. Wie kann ich diese Distanz berechnen? Hat jemand eine Idee? Danke und Gruss |
Re: Effektive Höhe Buchstaben und Canvas.TextHeight
Ich hätte da so eine Vermutung, und zwar ist diese Höhe höchstwarscheinlich der Abstand vom unteren Rand zum Beispiel von "g" und dem oberen Rand von zum Beispiel "F".
Wenn das so ist, dann wäre zum Beispiel die Höhe von "F" 2/3 mal Canvas.TextHeight + 1/3. Flare |
Re: Effektive Höhe Buchstaben und Canvas.TextHeight
@Flare
Ist Deine Vermutung für 'F' irgendwo dokumentiert? Ich möchte das Ganze nicht mit dem Geodreieck am TFT ausmessen. Aber ein definierter Referenzbuchstabe (Uppercase) würde mir schon ausreichen, wenn es nicht gerade ein 'Q' ist! Danke Dir. |
Re: Effektive Höhe Buchstaben und Canvas.TextHeight
Dokumentiert wird es schon irgendwo sein. Ich habe das F genommen, weil es irgendwie für mich der größte Buchstabe ist ^^
Ich meine im allgemeinen einen Großbuchstaben. Flare |
Re: Effektive Höhe Buchstaben und Canvas.TextHeight
Das kann von Schrift zu Schrift unterschiedlich sein.
1. Die Schriftart muss genug Höhe und Tiefe für alle Zeichen haben. Es muss also nicht nur ein "U" hinein passen, sondern auch ein "Ü" mit den Punkten darüber. 2. Viele Schriftarten enthalten einen ![]() ![]() Den Abstand kannst du so bestimmen (die Schrift muss in den Canvas gesetzt sein):
Delphi-Quellcode:
var
tm: TTextMetric; begin GetTextMetrics(Canvas.Handle, tm); Result := tm.tmInternalLeading; end; |
Re: Effektive Höhe Buchstaben und Canvas.TextHeight
Ich nahm immer das kleine "q" als niedrigsten und das "AE" als den hoechsten Buchstaben!
|
Re: Effektive Höhe Buchstaben und Canvas.TextHeight
Hallo!
Ich bin bei der Suche nach einer Lösung auf dieses Forum gestoßen. Und so alt ist der Thread ja nicht, sodass man ihn ruhig aufwärmen kann. :mrgreen: Zum Problem: Wenn ich an TextWidth einen Text übergebe, bekomme ich die Breite des Textes in aktueller Schrift und Größe in Pixeln zurück- geliefert. TextHeight ist es aber egal, welchen Text ich übergebe - ob "g", "F" oder gar "." - ich erhalte immer den gleichen Wert zurück, der wohl dem gesammten Space der Schrift entspricht (vom höchsten bis zum tiefsten Bogen aller Zeichen). Warum übergebe ich dann überhaupt einen String? Im vorliegenden Fall will ich die Höhe aller Ziffern ermitteln, um eine Zahl mit festgelegtem Abstand unter eine Grafik zu drucken. Ich werde jetzt mal Experimente mit dem "Internal Leading" machen. Oder ich ändere meine Ausrichtung der Schrift (derzeit BaseLine). Danke und Gruß Patrick |
Re: Effektive Höhe Buchstaben und Canvas.TextHeight
Hallo,
Zitat:
![]() Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 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 by Thomas Breitkreuz