Control.CreateGraphics Methode

Definition

Erstellt die Graphics für das Steuerelement.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

Gibt zurück

Das Graphics für das Steuerelement.The Graphics for the control.

Beispiele

Im folgenden Codebeispiel wird die Größe des angegebenen Steuer Elements geändert, sodass das Steuerelement seinen formatierten Text aufnehmen kann.The following code example resizes the specified control so the control will accommodate its formatted text. Der formatierte Text ist die Text-Eigenschaft, der das Steuerelement zugewiesen wurde, Font auf den Text angewendet wird.The formatted text is the Text property with the control's assigned Font applied to the text. Die AutoSizeControl-Methode in diesem Beispiel verfügt auch über einen textPadding-Parameter, der die Auffüll Zeichen darstellt, die auf alle Ränder des Steuer Elements angewendet werden sollen.The AutoSizeControl method in this example also has a textPadding parameter that represents the padding to apply to all edges of the control. Damit die Auffüll Zeichen gleich sind, richten Sie den Text mit dem MiddleCenter-Wert System.Drawing.ContentAlignment ein, wenn das Steuerelement es unterstützt.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

Hinweise

Das Graphics Objekt, das Sie über die CreateGraphics-Methode abrufen, sollte normalerweise nicht beibehalten werden, nachdem die aktuelle Windows-Nachricht verarbeitet wurde, da alle mit diesem Objekt gezeichneten Elemente mit der nächsten WM_PAINT-Meldung gelöscht werden.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. Daher können Sie das Graphics-Objekt für die Wiederverwendung nicht zwischenspeichern, außer wenn Sie nicht visuelle Methoden wie Graphics.MeasureString verwenden.Therefore you cannot cache the Graphics object for reuse, except to use non-visual methods like Graphics.MeasureString. Stattdessen müssen Sie CreateGraphics jedes Mal, wenn Sie das Graphics-Objekt verwenden möchten, und dann Dispose aufzurufen, wenn Sie es nicht mehr benötigen.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. Weitere Informationen zu Windows-Meldungen finden Sie unter WndProc.For more information about Windows messages, see WndProc.

CreateGraphics legt den Besitz auf den aufrufenden Thread fest und schlägt fehl, wenn er für andere Threads aufgerufen wird.By design, CreateGraphics sets ownership to the calling thread, and fails if it is called on other threads.

Hinweis

Neben der InvokeRequired-Eigenschaft gibt es vier Methoden für ein Steuerelement, die Thread sicher sind: Invoke, BeginInvoke, EndInvoke und CreateGraphics, wenn das Handle für das Steuerelement bereits erstellt wurde.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. Wenn CreateGraphics aufgerufen wird, bevor das Handle des Steuer Elements in einem Hintergrund Thread erstellt wurde, kann dies zu ungültigen Thread übergreifenden aufrufen führen.Calling CreateGraphics before the control's handle has been created on a background thread can cause illegal cross thread calls. Für alle anderen Methodenaufrufe sollten Sie eine der Aufruf Methoden verwenden, um den Aufruf an den Thread des Steuer Elements zu Mars Hallen.For all other method calls, you should use one of the invoke methods to marshal the call to the control's thread.

Sicherheit

UIPermission
für sichere untergeordnete Fenster, um diese Methode aufzurufen.for safe subwindows to call this method. Zugeordnete Enumeration: SafeSubWindows-Wert UIPermissionWindow.Associated enumeration: SafeSubWindows value of UIPermissionWindow.

Gilt für:

Siehe auch