次の方法で共有


Graphics.MeasureString メソッド (String, Font, PointF, StringFormat)

指定した Font オブジェクトを使用し、指定した StringFormat オブジェクトで書式指定して描画した場合の、指定した文字列を計測します。

Overloads Public Function MeasureString( _
   ByVal text As String, _   ByVal font As Font, _   ByVal origin As PointF, _   ByVal stringFormat As StringFormat _) As SizeF
[C#]
public SizeF MeasureString(stringtext,Fontfont,PointForigin,StringFormatstringFormat);
[C++]
public: SizeF MeasureString(String* text,Font* font,PointForigin,StringFormat* stringFormat);
[JScript]
public function MeasureString(
   text : String,font : Font,origin : PointF,stringFormat : StringFormat) : SizeF;

パラメータ

  • text
    計測する文字列。
  • font
    文字列のテキスト形式を定義する Font オブジェクト。
  • origin
    文字列の左上隅を表す PointF 構造体。
  • stringFormat
    行間など、文字列の書式情報を表す StringFormat オブジェクト。

戻り値

このメソッドは、 text パラメータの文字列のサイズをピクセル単位で表す SizeF 構造体を font パラメータと stringFormat パラメータで描画されたとおりに返します。

解説

MeasureString メソッドは独立した文字列で使用するようにデザインされており、グリフの突出に対応するための少量の余白を文字列の前後に含めます。また、 DrawString メソッドはグリフのポイントを調整して表示品質を最適化するため、 MeasureString で報告されるよりも狭い範囲に文字列が表示される可能性があります。書式指定したテキストを実装する場合などに、レイアウト内の隣接する文字列に最適なメトリックを取得するには、 MeasureCharacterRanges メソッドを使用します。

使用例

[Visual Basic, C#] 次の例は、Windows フォームでの使用を意図してデザインされており、 Paint イベント ハンドラのパラメータである PaintEventArgs e が必要です。このコードは次のアクションを実行します。

  • 計測する文字列を作成し、フォント オブジェクトを Arial (16 ポイント) に設定します。
  • 文字列の左上隅を配置する点を作成します。
  • 文字列書式オブジェクトを作成し、その書式フラグを StringFormatFlags.DirectionVertical に設定します。
  • 文字列を計測するサイズ オブジェクトを作成します。
  • 文字列のサイズを、その文字列、フォント オブジェクト、位置指定点、および文字列書式を使用して計測します。
  • 位置指定点および文字列の計測サイズを使用して、赤の四角形を描画します。
  • 描画した四角形内に文字列を描画します。

[Visual Basic, C#] 縦の文字列を囲む縦の四角形が生成されます。

 
Public Sub MeasureStringPointFFormat(e As PaintEventArgs)
' Set up string.
Dim measureString As String = "Measure String"
Dim stringFont As New Font("Arial", 16)
' Set point for upper-left corner of string.
Dim x As Single = 50F
Dim y As Single = 50F
Dim ulCorner As New PointF(x, y)
' Set string format.
Dim newStringFormat As New StringFormat()
newStringFormat.FormatFlags = StringFormatFlags.DirectionVertical
' Measure string.
Dim stringSize As New SizeF()
stringSize = e.Graphics.MeasureString(measureString, stringFont, _
ulCorner, newStringFormat)
' Draw rectangle representing size of string.
e.Graphics.DrawRectangle(New Pen(Color.Red, 1), x, y, _
stringSize.Width, stringSize.Height)
' Draw string to screen.
e.Graphics.DrawString(measureString, stringFont, Brushes.Black, _
ulCorner, newStringFormat)
End Sub
        
[C#] 
public void MeasureStringPointFFormat(PaintEventArgs e)
{
// Set up string.
string measureString = "Measure String";
Font stringFont = new Font("Arial", 16);
// Set point for upper-left corner of string.
float x = 50.0F;
float y = 50.0F;
PointF ulCorner = new PointF(x, y);
// Set string format.
StringFormat newStringFormat = new StringFormat();
newStringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
// Measure string.
SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(
measureString,
stringFont,
ulCorner,
newStringFormat);
// Draw rectangle representing size of string.
e.Graphics.DrawRectangle(
new Pen(Color.Red, 1),
x, y, stringSize.Width, stringSize.Height);
// Draw string to screen.
e.Graphics.DrawString(
measureString,
stringFont,
Brushes.Black,
ulCorner,
newStringFormat);
}
        

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

Graphics クラス | Graphics メンバ | System.Drawing 名前空間 | Graphics.MeasureString オーバーロードの一覧