Control.CreateGraphics メソッド

定義

コントロールの Graphics を作成します。

C#
public System.Drawing.Graphics CreateGraphics ();

戻り値

Graphics

コントロールの Graphics

次のコード例では、コントロールが書式設定されたテキストに収まるよう、指定したコントロールのサイズを変更します。 書式設定されたテキストは、 Text コントロールが割り当てられたプロパティで、テキストに適用されます FontAutoSizeControlこの例のメソッドには、textPaddingコントロールのすべての端に適用するパディングを表すパラメーターもあります。 パディングを等しく表示するには、テキストをコントロールで MiddleCenter サポートされている場合の System.Drawing.ContentAlignment 値に合わせます。

C#
private void AutoSizeControl(Control control, int textPadding)
{
   // Create a Graphics object for the Control.
   Graphics g = control.CreateGraphics();

   // Get the Size needed to accommodate the formatted Text.
   Size preferredSize = g.MeasureString(
      control.Text, control.Font).ToSize();

   // Pad the text and resize the control.
   control.ClientSize = new Size(
      preferredSize.Width + (textPadding * 2), 
      preferredSize.Height+(textPadding * 2) );

   // Clean up the Graphics object.
   g.Dispose();
}

注釈

メソッドを使用してCreateGraphics取得するオブジェクトはGraphics、現在の Windows メッセージが処理された後に通常は保持されません。これは、そのオブジェクトで塗りつぶされたものは次のWM_PAINT メッセージで消去されるためです。 したがって、オブジェクトを Graphics 再利用するためにキャッシュすることはできません。ただし、次のような Graphics.MeasureString非ビジュアル メソッドを使用する場合を除きます。 代わりに、オブジェクトを使用Graphicsするたびに呼び出CreateGraphicsし、使用が完了したら呼び出すDispose必要があります。 Windows メッセージの詳細については、次を参照してください WndProc

仕様上、 CreateGraphics 呼び出し元のスレッドに所有権を設定し、他のスレッドで呼び出されると失敗します。

注意

このプロパティにInvokeRequired加えて、スレッド セーフなコントロールには、スレッド セーフInvokeBeginInvokeな 4 つのメソッドがあります。またEndInvokeCreateGraphicsコントロールのハンドルが既に作成されている場合です。 バックグラウンド スレッドでコントロールのハンドルが作成される前に呼び出 CreateGraphics すと、スレッド間の呼び出しが無効になることがあります。 他のすべてのメソッド呼び出しでは、いずれかの呼び出しメソッドを使用して、コントロールのスレッドへの呼び出しをマーシャリングする必要があります。

適用対象

製品 バージョン
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
Windows Desktop 3.0, 3.1, 5, 6, 7

こちらもご覧ください