Breite von Buchstaben einer Font ohne HDC ermitteln
-
Hallo zusammen
Ich habe folgendes Problem:
Ich möchte anhand eines HFONT die Breite jedes Buchstabens dieser HFONT ermitteln. Normalerweise würde man hierfür ja GetCharWidth32, jedoch benötigt diese Funktion ein HDC, welches ich nicht habe.Ich möchte nämlich ein Surface erstellen, in welches ich sämtliche Buchstaben hineinzeiche, und dieses Surface sollte genau so gross wie nötig sein. Also muss ich die Bereite der einzelen Buchstaben wissen, bevor ich ein Surface erstelle, auf welches ich dann ein HDC hätte...
Mfg Samuel
-
ich wüsste jetzt auch nichts aber du könntest dir auch mit einem trick behelfen
TEXTMETRICS tm; HFONT hfOld; HDC dc=CreateDC("Display", NULL, NULL, NULL); hfOld=SelectObject(dc, hFont); // hFont ist die Variable des Typs HFONT GetTextMetrics(dc, &tm); SelectObject(dc, hfOld); DeleteDC(dc);
-
Ishildur schrieb:
Hallo zusammen
Ich habe folgendes Problem:
Ich möchte anhand eines HFONT die Breite jedes Buchstabens dieser HFONT ermitteln. Normalerweise würde man hierfür ja GetCharWidth32, jedoch benötigt diese Funktion ein HDC, welches ich nicht habe.Ich möchte nämlich ein Surface erstellen, in welches ich sämtliche Buchstaben hineinzeiche, und dieses Surface sollte genau so gross wie nötig sein. Also muss ich die Bereite der einzelen Buchstaben wissen, bevor ich ein Surface erstelle, auf welches ich dann ein HDC hätte...
Mfg Samuel
Du könntest die Freetype-Library verwenden. Die kann auch komerziell genutzt werden wenn man die Credit-Pflicht beachtet.... mit der gehen so Font-Sachen richtig gut.
rya.
-
Hmmm... Wie bekomme ich denn die Breite jedes einzelnen Buchstabens aus der TEXTMETRIC heraus?
-
oh sorry hab ich übersehen aber mit dem erstellten DC kannst du auch GetCharWidth32 benutzen.
-
Hehe, ich frage mich nur, ob die Werte dann für das temporär erstellte DC mit denjenigen von dem IDirect3DSurface9 Interface angeforterten DC überstimmmen werden? Naja ausprobieren und hoffen, ich sehe momentan auch gerade keine andere Lösung
-
wenn du dort die gleiche schrift einsetzt dann stimmen die werte schon überein, denn Daten wie die Breite eines Zeichens sind nicht vom DC abhängig.
-
Hmmm, aber wieso benötigt er dann ein HDC als Parameter und nicht ein HFONT?
-
wahrscheinlich weil es praktikabler ist weil man meistens irgendwelche standardschriften hat und diese bereits in den DC eingesetzt sind.