幅約 100 ピクセル、高さ 20 ピクセルの固定サイズのラベルがあります。
長い文字列をラベルに配置すると、テキストが 2 行目に折り返されますが、ラベルのサイズが固定されているため、2 行目が表示されません。
2 行目に折り返すのではなく、文字列がラベルの 1 行に表示されるようにフォントサイズを縮小します。これを行う簡単な方法を知っている人はいますか?
編集:
以下のコードは私のために働いています(ほとんどの場合)。私は再帰的なことをしたくありませんでした。テキストがまだ別の行にあふれている場合があります。ラベルの幅全体を真に使用できないためだと思います。それをどのように補償しますか?
private void Label_TextChanged(object sender, EventArgs e)
{
Label label = sender as Label;
if (label != null && label.Text.Length != 0)
{
SizeF size = new SizeF();
using (Graphics g = label.CreateGraphics())
{
size = g.MeasureString(label.Text, label.Font);
}
Single x = (label.Width) / size.Width;
Single y = (label.Height) / size.Height;
Single scaler = x > y ? y : x;
using (Font font = label.Font)
{
label.Font = new Font(font.Name, font.SizeInPoints * scaler);
}
}
}