Skip to main content

C#で文字列のサイズを正しく測定する(Measure String)

問題の再現

.NETのGraphics.MeasureStringメソッドを利用すると文字列のサイズを測定できますが、通常の方法での測定結果に少しずれが発生します。ここでは正確の測定結果を得る方法を説明します。

まずテスト環境を作成します。新しいWindows Formプロジェクトを作成し、Formのコードを以下のように準備します。(Form7をForm1に変更してください)

public partial class Form7 : Form
{
  public Form7()
  {
    InitializeComponent();
    Font = new Font(Font.FontFamily, 14);
    Size = new Size(300, 250);
  }

  protected override void OnPaint(PaintEventArgs e)
  {
    base.OnPaint(e);    var g = e.Graphics;
    var str = "文字列を測定する";    
    
    // ----ここはテストコード----
  }
}

Read More