Mam kontrolkę użytkownika WinForms i próbuję uzyskać dokładny poziomy odstęp między znakami dla bieżącej czcionki, która ma być monoprzestrzenna.Pobierz metrykę czcionki w pikselach
Wygląda jak właściwość czcionki Size
zapewnia tę informację, ale najwyraźniej jest w punktach i pracuję w pikselach.
var fontWidth = this.Font.Size; // Returns em-size in points--not pixels
Jeśli samodzielnie utworzę czcionkę, mogę określić, że używa ona jednostek pikseli. Ale w moim przypadku czcionka jest ustawiona przez właściwość mojej kontroli użytkownika i nie mogę określić, w jaki sposób czcionka jest tworzona. Niestety, właściwość czcionki Unit
jest tylko do odczytu.
Jak utworzyć istniejące dane o zwracanej czcionce w pikselach?
Font.Size zwraca * wysokość * czcionki, a nie szerokości. Będziesz musiał zmierzyć za pomocą, powiedzmy, TextRenderer.MeasureText(); Bolesne z powodu wyściółki. Zmierz, powiedzmy, nowy ciąg ("m", 100) i podziel przez 100. –
Dzięki, byłem przyzwyczajony do słuchania o em w kontekście szerokości. Spojrzałem na 'Graphics.MeasureString', ale wygląda na to, że' MeasureText' jest w pikselach. Sprawdzę to, chociaż zaczynam myśleć, że moim najlepszym sposobem jest dodanie deklaracji, aby wywołać funkcję Windows 'GetTextMetrics'. –
@JonathanWood: MeasureText lub MeasureString nie dawałyby ci odstępów między znakami, prawda? – Neolisk