2009-01-09 45 views
4

我正在創建一個自定義控件,其中一部分正在使用Graphics類將文本繪製到窗體上。我目前使用固定寬度的字體,我想知道的字體將如何寬屏顯示器,但並沒有出現任何如何確定打印時字符串的寬度?

private float _lineHeight { get { return this.Font.Size + 5; } } 
private void Control_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics g = this.CreateGraphics(); 
    Brush b = new SolidBrush(Colors[7]); 

    g.DrawString("Hello World!", this.Font, b, 0, 2); 
    g.DrawString("This has been a test of the emergency drawing system!", 
     this.Font, b, 0, 2 + _lineHeight); 
} 

:目前我使用下面的代碼來顯示它這類信息的屬性。有什麼方法可以獲得它?我想要它,所以我可以在顯示時正確換行。

回答

11

是的,你可以使用MeasureStringGraphics

此方法返回的SizeF結構,表示 大小,由 指定的PageUnit物業單位,由文本中指定的字符串 的參數爲 用字體參數繪製。

private void MeasureStringMin(PaintEventArgs e) 
{ 

    // Set up string. 
    string measureString = "Measure String"; 
    Font stringFont = new Font("Arial", 16); 

    // Measure string. 
    SizeF stringSize = new SizeF(); 
    stringSize = e.Graphics.MeasureString(measureString, stringFont); 

    // Draw rectangle representing size of string. 
    e.Graphics.DrawRectangle(new Pen(Color.Red, 1), 0.0F, 0.0F, stringSize.Width, stringSize.Height); 

    // Draw string to screen. 
    e.Graphics.DrawString(measureString, stringFont, Brushes.Black, new PointF(0, 0)); 
} 
+0

啊,在圖形類...好電話,我一直在尋找高和低的字體類的東西。 – 2009-01-09 04:03:08