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

Définition

Crée le Graphics pour le contrôle.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

Retours

Graphics du contrôle.The Graphics for the control.

Exemples

L’exemple de code suivant redimensionne le contrôle spécifié afin que le contrôle puisse prendre en charge son texte mis en forme.The following code example resizes the specified control so the control will accommodate its formatted text. Le texte mis en forme Text est la propriété avec l’Assigned Font du contrôle appliquée au texte.The formatted text is the Text property with the control's assigned Font applied to the text. La AutoSizeControl méthode de cet exemple possède également un textPadding paramètre qui représente la marge intérieure à appliquer à tous les bords du contrôle.The AutoSizeControl method in this example also has a textPadding parameter that represents the padding to apply to all edges of the control. Pour que la marge intérieure s’affiche, alignez le texte avec la MiddleCenter valeur de System.Drawing.ContentAlignment si votre contrôle le prend en charge.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

Remarques

L' Graphics objet que vous récupérez par CreateGraphics le biais de la méthode ne doit normalement pas être conservé après le traitement du message Windows actuel, car tout ce qui est peint avec cet objet sera effacé avec le message WM_PAINT suivant.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. Par conséquent, vous ne Graphics pouvez pas mettre en cache l’objet pour la réutilisation, Graphics.MeasureStringsauf pour utiliser des méthodes non visuelles comme.Therefore you cannot cache the Graphics object for reuse, except to use non-visual methods like Graphics.MeasureString. Au lieu de cela, CreateGraphics vous devez appeler chaque fois que vous souhaitez Graphics utiliser l’objet, puis Dispose appeler lorsque vous avez fini de l’utiliser.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. Pour plus d’informations sur les messages Windows WndProc, consultez.For more information about Windows messages, see WndProc.

Par conception, CreateGraphics définit la propriété sur le thread appelant et échoue si elle est appelée sur d’autres threads.By design, CreateGraphics sets ownership to the calling thread, and fails if it is called on other threads.

Notes

En plus de la InvokeRequired propriété, il existe quatre méthodes sur un contrôle thread-safe : Invoke, BeginInvoke EndInvoke, et CreateGraphics si le handle du contrôle a déjà été créé.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. L' CreateGraphics appel de avant la création du handle du contrôle sur un thread d’arrière-plan peut provoquer des appels inter-threads illégaux.Calling CreateGraphics before the control's handle has been created on a background thread can cause illegal cross thread calls. Pour tous les autres appels de méthode, vous devez utiliser l’une des méthodes Invoke pour marshaler l’appel au thread du contrôle.For all other method calls, you should use one of the invoke methods to marshal the call to the control's thread.

Sécurité

UIPermission
pour que les sous-fenêtres sécurisées appellent cette méthode.for safe subwindows to call this method. Énumération associée SafeSubWindows : valeur UIPermissionWindowde.Associated enumeration: SafeSubWindows value of UIPermissionWindow.

S’applique à

Voir aussi