Control.CreateGraphics Methode

Definition

Erstellt die Graphics für das Steuerelement.

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

Gibt zurück

Das Graphics für das Steuerelement.

Beispiele

Im folgenden Codebeispiel wird die Größe des angegebenen Steuerelements geändert, sodass das Steuerelement seinen formatierten Text unterbringen kann. Der formatierte Text ist die Text Eigenschaft, bei der das Steuerelement dem Text zugewiesen Font ist. Die AutoSizeControl -Methode in diesem Beispiel verfügt auch über einen textPadding Parameter, der die Auffüllung darstellt, die auf alle Kanten des Steuerelements angewendet werden soll. Damit die Auffüllung gleich angezeigt wird, richten Sie den Text an den MiddleCenter Wert von aus System.Drawing.ContentAlignment , wenn das Steuerelement dies unterstützt.

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

Hinweise

Das Graphics Objekt, das Sie über die CreateGraphics -Methode abrufen, sollte normalerweise nicht beibehalten werden, nachdem die aktuelle Windows-Nachricht verarbeitet wurde, da alles, was mit diesem Objekt gezeichnet wurde, mit der nächsten WM_PAINT Nachricht gelöscht wird. Daher können Sie das Graphics Objekt nicht zur Wiederverwendung zwischenspeichern, außer nicht-visuelle Methoden wie Graphics.MeasureStringzu verwenden. Stattdessen müssen Sie jedes Mal aufrufenCreateGraphics, wenn Sie das Objekt verwenden möchten, und dann aufrufenDispose, wenn Sie mit der Graphics Verwendung fertig sind. Weitere Informationen zu Windows-Nachrichten finden Sie unter WndProc.

Legt den Besitz auf den aufrufenden Thread fest und CreateGraphics schlägt fehl, wenn er für andere Threads aufgerufen wird.

Hinweis

Zusätzlich zur InvokeRequired -Eigenschaft gibt es vier Methoden für ein Steuerelement, die threadsicher sind: Invoke, BeginInvoke, EndInvokeund CreateGraphics , wenn das Handle für das Steuerelement bereits erstellt wurde. Das Aufrufen CreateGraphics , bevor das Handle des Steuerelements in einem Hintergrundthread erstellt wurde, kann zu illegalen Crossthreadaufrufen führen. Für alle anderen Methodenaufrufe sollten Sie eine der Aufrufmethoden verwenden, um den Aufruf des Steuerelementthreads zu marshallen.

Gilt für:

Weitere Informationen