Control.CreateGraphics Metodo

Definizione

Crea l'oggetto Graphics per il controllo.

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

Restituisce

Oggetto Graphics per il controllo.

Esempio

Nell'esempio di codice seguente il controllo specificato viene ridimensionato in modo che il controllo possa contenere il testo formattato. Il testo formattato è la Text proprietà con il controllo assegnato Font al testo. Il AutoSizeControl metodo in questo esempio include anche un textPadding parametro che rappresenta la spaziatura interna da applicare a tutti i bordi del controllo. Per rendere la spaziatura interna uguale, allineare il testo con il MiddleCenter valore di System.Drawing.ContentAlignment se il controllo lo supporta.

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

Commenti

L'oggetto Graphics recuperato tramite il CreateGraphics metodo non deve in genere essere conservato dopo l'elaborazione del messaggio di Windows corrente, perché qualsiasi elemento disegnato con tale oggetto verrà cancellato con il messaggio WM_PAINT successivo. Non è pertanto possibile memorizzare nella cache l'oggetto per il riutilizzo, ad eccezione dell'utilizzo Graphics di metodi non visivi come Graphics.MeasureString. È invece necessario chiamare CreateGraphics ogni volta che si vuole usare l'oggetto e quindi chiamare Dispose al termine dell'utilizzoGraphics. Per altre informazioni sui messaggi di Windows, vedere WndProc.

Per impostazione predefinita, CreateGraphics imposta la proprietà sul thread chiamante e ha esito negativo se viene chiamato su altri thread.

Nota

Oltre alla InvokeRequired proprietà, sono disponibili quattro metodi su un controllo thread-safe: Invoke, BeginInvoke, EndInvokee CreateGraphics se l'handle per il controllo è già stato creato. La chiamata CreateGraphics prima che l'handle del controllo sia stato creato in un thread in background può causare chiamate tra thread non valide. Per tutte le altre chiamate di metodo, è consigliabile usare uno dei metodi invoke per effettuare il marshalling della chiamata al thread del controllo.

Si applica a

Vedi anche