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

Definição

Cria o Graphics para o controle.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

Retornos

O Graphics para o controle.The Graphics for the control.

Exemplos

O exemplo de código a seguir redimensiona o controle especificado para que o controle acomode seu texto formatado.The following code example resizes the specified control so the control will accommodate its formatted text. O texto formatado é a Text Propriedade com a atribuição Font do controle aplicada ao texto.The formatted text is the Text property with the control's assigned Font applied to the text. O AutoSizeControl método neste exemplo também tem um textPadding parâmetro que representa o preenchimento a ser aplicado a todas as bordas do controle.The AutoSizeControl method in this example also has a textPadding parameter that represents the padding to apply to all edges of the control. Para que o preenchimento pareça igual, alinhe o texto com o MiddleCenter valor de System.Drawing.ContentAlignment se o controle der suporte a ele.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

Comentários

O Graphics objeto que você recupera por meio CreateGraphics do método normalmente não deve ser mantido depois que a mensagem atual do Windows tiver sido processada, porque qualquer coisa pintada com esse objeto será apagada com a próxima mensagem 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. Portanto, você não pode Graphics armazenar o objeto em cache para reutilização, exceto para usar Graphics.MeasureStringmétodos não visuais como.Therefore you cannot cache the Graphics object for reuse, except to use non-visual methods like Graphics.MeasureString. Em vez disso, você CreateGraphics deve chamar toda vez que desejar usar o Graphics objeto e, em seguida Dispose , chamar quando terminar de usá-lo.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. Para obter mais informações sobre mensagens do Windows WndProc, consulte.For more information about Windows messages, see WndProc.

Por design, CreateGraphics define a propriedade para o thread de chamada e falha se ela for chamada em outros threads.By design, CreateGraphics sets ownership to the calling thread, and fails if it is called on other threads.

Observação

Além InvokeRequired da propriedade, há quatro métodos em um controle que são thread-safe: Invoke, BeginInvoke, EndInvokee CreateGraphics se o identificador do controle já foi criado.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. Chamar CreateGraphics antes de o identificador do controle ter sido criado em um thread em segundo plano pode causar chamadas ilegais entre threads.Calling CreateGraphics before the control's handle has been created on a background thread can cause illegal cross thread calls. Para todas as outras chamadas de método, você deve usar um dos métodos Invoke para realizar marshaling da chamada para o thread do controle.For all other method calls, you should use one of the invoke methods to marshal the call to the control's thread.

Segurança

UIPermission
para subjanelas seguras para chamar esse método.for safe subwindows to call this method. Enumeração associada: SafeSubWindows valor de UIPermissionWindow.Associated enumeration: SafeSubWindows value of UIPermissionWindow.

Aplica-se a

Veja também