Breite von Buchstaben [erledigt]
-
Hmm, und wie bekommt man das in einer vernünftigen Einheit wie Pixel? In meinem UI System rechne ich mit Pixel...
-
GetTextMetrics() der Compiler rechnet das schon in Pixel um. ( So ist das bei mir zumindest)
-
Das geht nicht. GetTextMetrics liefert nur die maximale Breite oder die Durchschnittsbreite für alle Zeichen. Ich brauche aber die individuelle Breite für jedes einzelne Zeichen.
Habs schon mit GetCharWidth
http://msdn.microsoft.com/en-us/library/ms901131.aspx versucht, aber da verstehe ich was nicht: Der letzte Parameter ist ein Zeiger auf einen Int (LPINT), der die Breite der (im Extremfall 26) Zeichen enthält. Aber bekommt man in einem einzigen Integer 26 Zeichen unter? Und wie filtert man am Ende das Gesuchte heraus?
-
Ich glaub das muss ein int-Array sein... Auser du willst nur die Breite eines einzigen Buchstabens:
int width; char cCharacter = 'A'; GetCharWidth32(hdc, cCharacter, cCharacter, &width);MfG Tim
-
unter winversion.Major == 4 mit GetCharWidth und DrawText(......DT_CALCRECT); ansonsten: mit GetCharWidth32 und DrawText(......DT_CALCRECT);
-
Also, mit GetTextExtentPoint32 kann ich die Breite einer String-Zeile abfragen. Aber wenn ich nur einen einzelnen Buchstaben abfrage, bekomme ich nur 1 als Breite. Das kann nicht sein, weil selbst ein "i" 4 Pixel breit ist. Wie kommt das?
-
Elektronix schrieb:
Also, mit GetTextExtentPoint32 kann ich die Breite einer String-Zeile abfragen. Aber wenn ich nur einen einzelnen Buchstaben abfrage, bekomme ich nur 1 als Breite.
An GetTextExtentPoint32() übergibst Du als Parameter sicher einen Pointer auf einen String, oder?
Und nicht etwa das einzelne Zeichen als Parameter.Ansonsten zeig mal Dein Code.
Martin
-
Schon klar, Pointer auf den String. Aber der String enthält eben nur einen Buchstaben.
-
memset(&rc, 0, sizeof(rc)); DrawText(hDC, Text, len_Text, &rc, DT_CALCRECT); widht = rc.right -rc.left
-
Hab den Fehler gefunden. Ich habe vergessen, vor der Abfrage der Schriftmaße einen DC anzufordern.

Danke für alle Antworten.