Wie Messen Sie die Breite in pixel für eine Ziffer in einer bestimmten schriftart / - Größe (C#)

Ich versuche zu berechnen, die pixel-Breite von Excel-Spalten, wie beschrieben in dieser Beitrag, mit der offiziellen Formel von der OpenXML-Spezifikation. Um jedoch die Anwendung dieser Formel, die ich brauche, um zu wissen, die Maximalen Wert für die Breite der Normalen schriftart, die die pixel-Breite des breitesten numerischen Zeichen. Der OpenXML-Spezifikation gibt dieses Beispiel als Verdeutlichung:

Mit der schriftart Calibri als ein Beispiel, den maximalen Wert für die Breite der 11 Punkt-Schrift
Größe ist 7 Pixel (96 dpi).

Ich habe überprüft, dass diese korrekt sind, indem Sie visuell untersuchen Calibri 11 Punkt Stelle, und es ist in der Tat 7 Pixel breit. So, ich bin versucht, erstellen Sie eine Methode, die zurückkehren wird der maximale Ziffernbreite, die für jede schriftart /- Größe.

Folge ich den Empfehlungen in diese Frage, aber es hat nicht die Ergebnisse, die ich erwarte.

Hier mein test code:

var font = new Font("Calibri", 11.0f, FontStyle.Regular);

for (var i = 0; i < 10; i++)
{
    Debug.WriteLine(TextRenderer.MeasureText(i.ToString(), font));
}

Diese Berichte, dass alle Ziffern haben eine Breite von 15.

Irgendwelche Vorschläge, bitte?

Dank,
Tim

InformationsquelleAutor Tim Coulter | 2009-12-02
Schreibe einen Kommentar