String-Ausmaße bestimmen
-
Hallo da!
Mir stellt sich das Problem, dass ich Stringausmaße für's Layout bestimmen möchte (Die natürlich von der Bildschirm-DPI abhängen) aber nichts zeichnen will. Ich handhabe alle Zeichnung mit Gdiplus. Nun wollte ich fragen, wie ich mir am besten ein "Proxy"-Graphics-Objekt erzeugen kann, das nicht wirklich einen Ausgabepuffer besitzt, aber ansonsten alle Einstellungen des Desktops hält. Dessen Methoden zur Ausmaß-Bestimmung von Strings (Also in meinem Fall MeasureString(...)) würde ich dann gerne benutzen.Viele Grüße,
Michael
-
Dazu brauchst Du
GetTextExtentPoint32()
die Size structur gibt Dir dann entsprechend des letzten selectierten Font die Länge des Strings in logical units (alg. pixel) zurück.greetz
-
Hmmmm. Wie ist das denn... hat Gdiplus beim Font-Zeichnen nicht mehr zu bieten als die "normale" WinAPI? Oder wurden im Zuge des einführens von GDI+ alle normalen Funktionen darüber implementiert? Würde Graphics::MeasureString dieselben Werte liefern?
Aber das Problem, das ich habe ist ja, dass ich dafür einen HDC brauche... Kann ich da einfach GetDC(NULL) benutzen? Oder sollte ich lieber GetDC(meinHwnd) verwenden? Oder keins von beidem? Ich möchte am liebsten keine Nebeneffekte, schließlich möchte ich ja nichts zeichnen.
Zur Zeit würde ich zuGraphics* g = Graphics::FromHDC( ::GetDC(NULL) );tendieren.
Danke!
Michael
-
Das DC würde ich mittels GetDC(hThisWindow) holen,
und zum schluss wieder releasen. nur weil du den devicecontext holst breuchste ja noch lange nüx zeichnen,...Die Funktion GetTextExtentPoint32:
The GetTextExtentPoint32 function uses the currently selected font to compute the dimensions of the string. The width and height, in logical units, are computed without considering any clipping.
greetz