Control.CreateGraphics Control.CreateGraphics Control.CreateGraphics Control.CreateGraphics Method

定義

コントロールの Graphics を作成します。Creates the Graphics for the control.

public:
 System::Drawing::Graphics ^ CreateGraphics();
public System.Drawing.Graphics CreateGraphics ();
member this.CreateGraphics : unit -> System.Drawing.Graphics
Public Function CreateGraphics () As Graphics

戻り値

コントロールの GraphicsThe Graphics for the control.

次のコード例では、コントロールは、その書式設定されたテキストを可能になりますので、指定したコントロールがサイズ変更します。The following code example resizes the specified control so the control will accommodate its formatted text. 書式設定されたテキストは、Textコントロールとプロパティの割り当て済みFontテキストに適用します。The formatted text is the Text property with the control's assigned Font applied to the text. AutoSizeControlこの例ではメソッドがあります、textPaddingコントロールのすべての端に適用する余白を表すパラメーター。The AutoSizeControl method in this example also has a textPadding parameter that represents the padding to apply to all edges of the control. 等しく見える埋め込みをするためには、文字列を揃えます。、 MiddleCenter @propertySystem.Drawing.ContentAlignmentコントロールでサポートされている場合。To make the padding appear equal, align the text with the MiddleCenter value of System.Drawing.ContentAlignment if your control supports it.

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

注釈

Graphicsを通じて取得するオブジェクト、CreateGraphicsメソッドは通常は保持されません、現在の Windows メッセージの処理が完了した後 WM_PAINT メッセージを次にそのオブジェクトで描画されるものが消去されるため、します。The Graphics object that you retrieve through the CreateGraphics method should not normally be retained after the current Windows message has been processed, because anything painted with that object will be erased with the next WM_PAINT message. そのためキャッシュすることはできません、Graphicsなどのメソッドを非表示に使用する以外、再利用するためのオブジェクトGraphics.MeasureStringします。Therefore you cannot cache the Graphics object for reuse, except to use non-visual methods like Graphics.MeasureString. 代わりに、呼び出す必要があるCreateGraphicsを使用するたびに、Graphicsオブジェクトを呼び出してDispose使用が終了したら。Instead, you must call CreateGraphics every time that you want to use the Graphics object, and then call Dispose when you are finished using it. Windows メッセージの詳細については、次を参照してください。WndProcします。For more information about Windows messages, see WndProc.

仕様上、CreateGraphics所有権を呼び出し元のスレッドに設定し、他のスレッドで呼び出される場合は失敗します。By design, CreateGraphics sets ownership to the calling thread, and fails if it is called on other threads.

注意

加え、InvokeRequiredプロパティはスレッド セーフであるコントロールの 4 つの方法があります: InvokeBeginInvokeEndInvoke、およびCreateGraphicsコントロールのハンドルが既に作成されている場合。In addition to the InvokeRequired property, there are four methods on a control that are thread safe: Invoke, BeginInvoke, EndInvoke, and CreateGraphics if the handle for the control has already been created. 呼び出すCreateGraphicsコントロールのハンドルがバック グラウンド スレッドで作成される前に発生する可能性がクロス スレッドの呼び出しが無効です。Calling CreateGraphics before the control's handle has been created on a background thread can cause illegal cross thread calls. 他のすべてのメソッド呼び出しにはコントロールのスレッドへの呼び出しをマーシャ リングするのに invoke メソッドのいずれかを使用する必要があります。For all other method calls, you should use one of the invoke methods to marshal the call to the control's thread.

セキュリティ

UIPermission
このメソッドを呼び出すセーフ サブウィンドウします。for safe subwindows to call this method. 列挙型に関連付けられている: SafeSubWindows UIPermissionWindowします。Associated enumeration: SafeSubWindows value of UIPermissionWindow.

適用対象

こちらもご覧ください