2012-12-12 49 views
6

我正在尋找一種使標籤中的文本能夠縮放的方式,以適應整個父容器。我能想到的一種方法是在窗口重新調整大小的情況下獲取容器大小,然後相應地增加或減小字體大小,但這會限制其可能性。如何在Winforms應用程序中使標籤文本可縮放

想知道是否有更好的方法做到這一點,這可能更像Winforms應用程序中的錨定屬性。

回答

4

我知道答案隱藏在圖形對象和繪畫事件的某處,玩弄這兩個關鍵字解決了我的問題。這是在我的特定情況下工作的解決方案。

我只是改變油漆事件的字體大小爲我的標籤如下:

private void myLabel_Paint(object sender, PaintEventArgs e) 
{ 
    float fontSize = NewFontSize(e.Graphics, parentContainer.Bounds.Size, myLabel.Font, myLabel.Text); 
    Font f = new Font("Arial", fontSize, FontStyle.Bold); 
    myLabel.Font = f; 
} 

凡作爲NewFontSize功能如下:

public static float NewFontSize(Graphics graphics, Size size, Font font, string str) 
{ 
    SizeF stringSize = graphics.MeasureString(str, font); 
    float wRatio = size.Width/stringSize.Width; 
    float hRatio = size.Height/stringSize.Height; 
    float ratio = Math.Min(hRatio, wRatio); 
    return font.Size * ratio; 
} 

我還發現這篇文章有幫助 http://www.switchonthecode.com/tutorials/csharp-tutorial-font-scaling

+0

工作得很好!謝謝。 – nozzleman

+1

什麼是parentContainer?你能發送完整的代碼的網址?謝謝! – Xarialon

相關問題