Schrift Breite anhand es Fonts und des Textes berechnen.
-
Ich bin gerade bei meinem Projekt an einem Message Box system, was auf dem Bildschirm angezeigt wird.
Nun habe ich mir gedacht, das es mies aussieht, und ich es auch ncith immer dem User überlassen möchte, wenn kein Zeilenumbruch besteht, und die Msg somit aus dem Fenster hinaus läuft. Nur wie berechne ich die Breite der Msg(in Pixeln) anhand der Font Größe? Fontsize * letters funktioniert schonmal nicht so wirklich, setzt den Umbruch viel zu früh.
Wie kann man sowas halbwegs zuverlässig durch bei allen Font arten berechnen?Ich nutze DirectX 9 und c++, über einen Tipp wäre ich dankbar
-
Wenn nicht alle Buchstaben gleich groß sind wirst du wohl zählen müssen.
-
was meinst du mit zählen?
ich übergebe im Moment einen string an eine "DrawFont()", d.h. wirklich zählen kann ich nur davor.
wie also soll ich zählen?EDIT:
mit bisschen testen habe ich herausgefunden, das etwa FontSize / 2.2 die Breite dar stellt. Hat bisher immer gepasst, werde ich denke ich so verwenden (stimmt natürlich vll nicht immer, aber für meine Zwecke reicht es erst mal).
Wenn doch noch jemand einen besseren Tipp hat, nur her damit
-
http://www.toymaker.info/Games/html/text.html
vielleicht hilft dir das unter "Advanced"? Ich kenn mich mit DirectX wirklich nicht so aus.
-
also, das hilft mir nicht so ganz weiter, denn ich brauche die größe BEVOR ich den draw beginne, und nicht, wenn er schon durch ist.
jemand ne andere idee?
-
DT_CALCRECT that causes DrawText to set the passed rectangle to the size required to display the text. When using this flag DrawText will not actually draw anything, it is purely a way of obtaining the size of the text.
-
damit wird doch das rect beim draw auf die benötigte größe gesetzt, oder mach ich grade einen fehler beim übesetzen? wäre zumindest das naheliegendste, aber das brauche ich nicht.
-
Doch genau das brauchst du!
Oder kannst du etwa kein Englisch?
-
pyhax schrieb:
.... When using this flag DrawText will not actually draw anything, it is purely a way of obtaining the size of the text.
Reicht das?