2016-07-17 13 views
2

Was ich versuche, ist eine Zahl innerhalb eines Kreises zu zeichnen, so dass sie sowohl vertikal als auch horizontal zentral positioniert ist. Ich zeichne sowohl den Kreis als auch die Textzeichenfolge mit der gleichen Rechteckstruktur und mit der Mitte für horizontale und vertikale Ausrichtung. Aber, wie Sie aus dem Bild sehen können, wo ich eine horizontale Linie über den weißen Kreis gezeichnet habe, richtet der Text seine Grundlinie zentral aus und mein Auge sagt, dass es sich horizontal leicht nach links ausrichtet.C# Winforms. Text genau zentrisch innerhalb eines Rechtecks ​​zeichnen

Ich habe versucht, fudging durch Hinzufügen von string.height/2 an die Spitze des Rechtecks, um es um 1/2 seiner Höhe zu verschieben, aber es ist immer noch nicht korrekt. (Ich stelle die Schriftgröße so ein, dass die Zahl entsprechend der Anzahl der Ziffern im Zähler in das Feld passt.)

Wie kann ich das bitte richtig machen?

var rect = new Rectangle(bmpWidth - maxCircleDiameter, bmpHeight - maxCircleDiameter, maxCircleDiameter, maxCircleDiameter); 
g.FillEllipse(Brushes.White, rect); 

using (var format = NewClassFactory.GetFormat(StringAlignment.Center, StringAlignment.Center, StringTrimming.Character)) 
    g.DrawString(toDisplay, newFont, Brushes.Black, rect, format); 

enter image description here

Antwort

2

Sie TextRenderer.DrawText verwenden können, einen Text in einem Rechteck zu zeichnen gebunden ist, eine Farbe und Schriftart verwendet und anderes Textformat Flag, das angibt:

var rect = new Rectangle(10, 10, 32, 32); 
e.Graphics.SmoothingMode = SmoothingMode.AntiAlias; 
e.Graphics.FillEllipse(Brushes.White, rect); 
TextRenderer.DrawText(e.Graphics, "100", this.Font, rect, Color.Black, 
    TextFormatFlags.HorizontalCenter | TextFormatFlags.VerticalCenter); 
+0

Nizza. Das stimmt perfekt überein, außer dass die Schrift selbst jetzt verdreht aussieht, verschmiert, als ob sie zweimal leicht nach rechts gezogen wäre. Ich habe einen Haltepunkt auf meinem Code, also weiß ich, dass es nur einmal durchgegangen ist. – Czeshirecat

+0

nvm. Ich habe die Backcolor-Option hinzugefügt und es ist jetzt perfekt. Vielen Dank Reza :) – Czeshirecat

Verwandte Themen