この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文
このトピックはまだ評価されていません - このトピックを評価する

Control.CreateGraphics メソッド

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

名前空間:  System.Windows.Forms
アセンブリ:  System.Windows.Forms (System.Windows.Forms.dll 内)
public Graphics CreateGraphics()

戻り値

型: System.Drawing.Graphics
コントロールの Graphics

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

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

メモ メモ

コントロールのハンドルが既に作成されている場合、InvokeRequired プロパティ以外に、スレッド セーフである 4 つのメソッド InvokeBeginInvokeEndInvoke、および CreateGraphics がコントロールにあります。 コントロールのハンドルがバックグラウンド スレッドで作成される前に CreateGraphics を呼び出すと、無効なスレッド間の呼び出しが発生する可能性があります。 その他のすべてのメソッドの呼び出しについては、Invoke メソッドの 1 つを使用して、その呼び出しをコントロールのスレッドにマーシャリングする必要があります。

指定したコントロールのサイズを変更して、書式設定されたテキストを収容できるようにするコード例を次に示します。 書式設定されたテキストは、コントロールに割り当てられた Font がテキストに適用されている Text プロパティです。 この例では AutoSizeControl メソッドにも、コントロールのすべての端に適用する埋め込みを表す textPadding パラメーターがあります。 埋め込みが均等に表示されるようにするには、System.Drawing.ContentAlignmentMiddleCenter 値を指定してテキストを配置します (コントロールがこれをサポートしている場合)。


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();
}


.NET Framework

サポート対象: 4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

サポート対象: 4、3.5 SP1
  • UIPermission  

    (セーフ サブウィンドウでこのメソッドを呼び出すために必要なアクセス許可)。 UIPermissionWindowSafeSubWindows 値 (関連する列挙体)

Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
この情報は役に立ちましたか。
(残り 1500 文字)
コミュニティ コンテンツ 追加
注釈 FAQ