【问题标题】:c# label font Size to fit in its panel containerc# label font Size to fit in its panel container
【发布时间】:2012-09-13 14:27:42
【问题描述】:

我有一个由 tablelayoutpanel 设计的表单。

在一个单元格中,我有一个停靠在该单元格上的面板,并且面板中有一个停靠在父面板上的标签。

标签自动调整大小功能设置为 false。

标签的字体大小必须是动态的,以便在重新调整表单大小(因此重新调整面板大小)时 label.text 仍然适合并填充面板而不会被剪切。

我尝试使用 TextRenderer.MeasureText / 测量字符串为字体找到合适的大小,但无法解决问题。

谢谢。

【问题讨论】:

  • 你能告诉我们你的代码吗?我知道这可以做到……

标签: fonts size label panel fill


【解决方案1】:

我根据this link写了一个代码sn-p,可以帮到你:

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();
    }

}

使用这种标签调整大小的方法,您可以确定更改的比例并从中定义新字体。我希望这能解决您的问题。

【讨论】:

    猜你喜欢
    • 2018-11-30
    • 2022-12-27
    • 2022-12-27
    • 2016-02-07
    • 2022-11-09
    • 2022-12-28
    • 2020-01-09
    • 2022-12-02
    • 1970-01-01
    相关资源
    最近更新 更多