Control.CreateGraphics メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
コントロールの Graphics を作成します。
public:
System::Drawing::Graphics ^ CreateGraphics();
public System.Drawing.Graphics CreateGraphics ();
member this.CreateGraphics : unit -> System.Drawing.Graphics
Public Function CreateGraphics () As Graphics
戻り値
コントロールの Graphics。
例
次のコード例では、コントロールが書式設定されたテキストに収まるよう、指定したコントロールのサイズを変更します。 書式設定されたテキストは、 Text コントロールが割り当てられたプロパティで、テキストに適用されます Font 。 AutoSizeControl
この例のメソッドには、textPadding
コントロールのすべての端に適用するパディングを表すパラメーターもあります。 パディングを等しく表示するには、テキストをコントロールで MiddleCenter
サポートされている場合の System.Drawing.ContentAlignment 値に合わせます。
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.
System::Drawing::Size preferredSize = g->MeasureString( control->Text, control->Font ).ToSize();
// Pad the text and resize the control.
control->ClientSize = System::Drawing::Size( preferredSize.Width + (textPadding * 2), preferredSize.Height + (textPadding * 2) );
// Clean up the Graphics object.
delete g;
}
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();
}
Private Sub AutoSizeControl(control As Control, textPadding As Integer)
' Create a Graphics object for the Control.
Dim g As Graphics = control.CreateGraphics()
' Get the Size needed to accommodate the formatted Text.
Dim preferredSize As Size = 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()
End Sub
注釈
メソッドを使用してCreateGraphics取得するオブジェクトはGraphics、現在の Windows メッセージが処理された後に通常は保持されません。これは、そのオブジェクトで塗りつぶされたものは次のWM_PAINT メッセージで消去されるためです。 したがって、オブジェクトを Graphics 再利用するためにキャッシュすることはできません。ただし、次のような Graphics.MeasureString非ビジュアル メソッドを使用する場合を除きます。 代わりに、オブジェクトを使用Graphicsするたびに呼び出CreateGraphicsし、使用が完了したら呼び出すDispose必要があります。 Windows メッセージの詳細については、次を参照してください WndProc。
仕様上、 CreateGraphics 呼び出し元のスレッドに所有権を設定し、他のスレッドで呼び出されると失敗します。
注意
このプロパティにInvokeRequired加えて、スレッド セーフなコントロールには、スレッド セーフInvokeBeginInvokeな 4 つのメソッドがあります。またEndInvoke、CreateGraphicsコントロールのハンドルが既に作成されている場合です。 バックグラウンド スレッドでコントロールのハンドルが作成される前に呼び出 CreateGraphics すと、スレッド間の呼び出しが無効になることがあります。 他のすべてのメソッド呼び出しでは、いずれかの呼び出しメソッドを使用して、コントロールのスレッドへの呼び出しをマーシャリングする必要があります。