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

반환

컨트롤에 대한 Graphics입니다.The 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 의 값 System.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 속성인 네 가지 메서드로 컨트롤에는 스레드로부터 안전 하: Invoke, BeginInvoke, EndInvoke, 및 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.

적용 대상

추가 정보