2012-09-13 46 views
1

我有一個由tablelayoutpanel設計的表單。c#標籤字體適合其面板容器的尺寸

在一個單元格中,我將一個面板停靠在該單元格中,並且在面板中是一個停靠在父面板上的標籤。

標籤自動調整功能設置爲false。

標籤的字體大小必須是動態的,這樣當表單被重新調整大小(因此面板被重新調整大小)時,label.text仍然適合並填充面板而不被剪切。

我試過TextRenderer.MeasureText/measure字符串來找到適當的字體大小,但無法解決問題。

謝謝。

+1

你能告訴我們你的代碼嗎?我知道這可以做到... – egrunin

回答

1

我寫了基於this link的代碼片段,可以幫助你:

using System.Drawing; 

public partial class Form1 : Form 
{ 
    public int initialWidth; 
    public int initialHeight; 
    public float initialFontSize; 

    public Form1() 
    { 
     InitializeComponent(); 
     AutoScaleMode = AutoScaleMode.None; 

     // Sets the initial size of the variables 
     initialWidth = Width; 
     initialHeight = Height; 
     initialFontSize = LabelFont.Font.Size; 
     LabelFont.Resize += LabelFont_Resize; 
    } 

    private void LabelFont_Resize(object sender, EventArgs e) 
    { 
     SuspendLayout(); 
     // Get the proportionality of the resize 
     float proportionalNewWidth = (float)Width/initialWidth; 
     float proportionalNewHeight = (float)Height/initialHeight; 

     // Calculate the current font size 
     LabelFont.Font = new Font(LabelFont.Font.FontFamily, initialFontSize * 
      (proportionalNewWidth > proportionalNewHeight ? proportionalNewHeight : proportionalNewWidth), 
      LabelFont.Font.Style); 
     ResumeLayout(); 
    } 

} 

使用標籤大小調整的這種方法,你確定變化的比率,並從中確定一個新的字體。我希望這能解決你的問題。