Partager via


Control.CreateGraphics Méthode

Définition

Crée le Graphics pour le contrôle.

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

Retours

Graphics

Graphics du contrôle.

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. Le texte mis en forme est la Text propriété avec l’affectation Font du contrôle au texte. La AutoSizeControl méthode de cet exemple a également un textPadding paramètre qui représente le remplissage à appliquer à tous les bords du contrôle. Pour que le remplissage apparaisse égal, alignez le texte avec la MiddleCenter valeur de System.Drawing.ContentAlignment si votre contrôle le prend en charge.

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’objet Graphics que vous récupérez par le biais de la CreateGraphics méthode ne doit pas normalement être conservé une fois le message Windows actuel traité, car tout ce qui est peint avec cet objet sera effacé avec le message WM_PAINT suivant. Par conséquent, vous ne pouvez pas mettre en cache l’objet Graphics à réutiliser, sauf pour utiliser des méthodes non visuelles comme Graphics.MeasureString. Au lieu de cela, vous devez appeler CreateGraphics chaque fois que vous souhaitez utiliser l’objet Graphics , puis appeler Dispose lorsque vous avez terminé de l’utiliser. Pour plus d’informations sur les messages Windows, consultez WndProc.

Par conception, CreateGraphics définit la propriété sur le thread appelant et échoue s’il est appelé sur d’autres threads.

Notes

En plus de la InvokeRequired propriété, il existe quatre méthodes sur un contrôle qui sont thread safe : Invoke, BeginInvoke, EndInvokeet CreateGraphics si le handle du contrôle a déjà été créé. L’appel CreateGraphics avant la création du handle du contrôle sur un thread d’arrière-plan peut entraîner des appels de threads croisés non conformes. 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.

S’applique à

Voir aussi