6
我正在尋找一種使標籤中的文本能夠縮放的方式,以適應整個父容器。我能想到的一種方法是在窗口重新調整大小的情況下獲取容器大小,然後相應地增加或減小字體大小,但這會限制其可能性。如何在Winforms應用程序中使標籤文本可縮放
想知道是否有更好的方法做到這一點,這可能更像Winforms應用程序中的錨定屬性。
我正在尋找一種使標籤中的文本能夠縮放的方式,以適應整個父容器。我能想到的一種方法是在窗口重新調整大小的情況下獲取容器大小,然後相應地增加或減小字體大小,但這會限制其可能性。如何在Winforms應用程序中使標籤文本可縮放
想知道是否有更好的方法做到這一點,這可能更像Winforms應用程序中的錨定屬性。
我知道答案隱藏在圖形對象和繪畫事件的某處,玩弄這兩個關鍵字解決了我的問題。這是在我的特定情況下工作的解決方案。
我只是改變油漆事件的字體大小爲我的標籤如下:
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
工作得很好!謝謝。 – nozzleman
什麼是parentContainer?你能發送完整的代碼的網址?謝謝! – Xarialon