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

Definición

Crea el Graphics para el control.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

Devoluciones

Graphics del control.The Graphics for the control.

Ejemplos

En el ejemplo de código siguiente se cambia el tamaño del control especificado para que el control alojará el texto con formato.The following code example resizes the specified control so the control will accommodate its formatted text. El texto con formato es el Text asignado de propiedad con el control del Font aplicado al texto.The formatted text is the Text property with the control's assigned Font applied to the text. El AutoSizeControl método en este ejemplo también tiene un textPadding parámetro que representa el relleno que se aplican a todos los bordes del control.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 el relleno parecen iguales, se alinea el texto con el MiddleCenter valor System.Drawing.ContentAlignment si el control lo admite.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

Comentarios

El Graphics objeto que se recupera mediante el CreateGraphics método no normalmente deben retenerse una vez procesado el mensaje actual de Windows, ya que nada se pinta con ese objeto se borrarán con el siguiente mensaje 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. Por lo tanto no se puede almacenar en caché el Graphics objeto para su reutilización, excepto para usar métodos no visual, como Graphics.MeasureString.Therefore you cannot cache the Graphics object for reuse, except to use non-visual methods like Graphics.MeasureString. En su lugar, debe llamar a CreateGraphics cada vez que se va a usar el Graphics objeto y, a continuación, llame a Dispose cuando haya terminado de utilizarlo.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 obtener más información acerca de los mensajes de Windows, consulte WndProc.For more information about Windows messages, see WndProc.

Por diseño, CreateGraphics establece la propiedad en el subproceso de llamada y se produce un error si se llama en otros subprocesos.By design, CreateGraphics sets ownership to the calling thread, and fails if it is called on other threads.

Nota

Además el InvokeRequired propiedad, hay cuatro métodos en un control que son seguros para subprocesos: Invoke, BeginInvoke, EndInvoke, y CreateGraphics si ya se ha creado el identificador del control.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. Una llamada a CreateGraphics antes de que se ha creado el identificador del control en un subproceso en segundo plano puede provocar no válidas entre las llamadas de subprocesos.Calling CreateGraphics before the control's handle has been created on a background thread can cause illegal cross thread calls. Para todas las demás llamadas de método, debe usar uno de los métodos de invocación para calcular las referencias de la llamada al subproceso del control.For all other method calls, you should use one of the invoke methods to marshal the call to the control's thread.

Seguridad

UIPermission
para las ventanas secundarias seguras llamar a este método.for safe subwindows to call this method. Enumeración asociada: SafeSubWindows valor UIPermissionWindow.Associated enumeration: SafeSubWindows value of UIPermissionWindow.

Se aplica a

Consulte también: