テキストが適切かつ完全にコントロールに表示されるように、テキストのフォントサイズを変更するメソッドを作成しようとしています。
このために試した方法は次のとおりです。
public static void FitControlFont(Control control)
{
if (control.Text.Length == 0)
{
return;
}
Font currentFont = control.Font;
Graphics graphics = control.CreateGraphics();
SizeF newSize = graphics.MeasureString(control.Text, control.Font);
graphics.Dispose();
float factorX = control.Width / newSize.Width;
float factorY = control.Height / newSize.Height;
float factor = factorX > factorY ? factorY : factorX;
if (control.InvokeRequired)
{
control.Invoke(new MethodInvoker(delegate { control.Font = new Font(currentFont.Name, currentFont.SizeInPoints * factor); }));
}
else
{
control.Font = new Font(currentFont.Name, currentFont.SizeInPoints * factor);
}
}
上記の方法は非常にうまく機能しますが、私の質問は、テキストを複数行として使用するにはどうすればよいですか? テキストが 1 行で表示されます (テキストが非常に小さく表示されるため)。
テキストが変更されたときにテキストフォントのサイズを変更する必要があるフォームで使用されるコントロールとして、ラベルとボタンを使用しています。