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

Definizione

Crea l'oggetto Graphics per il controllo.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

Restituisce

Oggetto Graphics per il controllo.The Graphics for the control.

Esempi

Nell'esempio di codice seguente viene ridimensionato il controllo specificato, in modo che il controllo possa contenere il testo formattato.The following code example resizes the specified control so the control will accommodate its formatted text. Il testo formattato è Text la proprietà con l'oggetto assegnato Font del controllo applicato al testo.The formatted text is the Text property with the control's assigned Font applied to the text. Il AutoSizeControl metodo in questo esempio dispone anche di textPadding un parametro che rappresenta la spaziatura interna da applicare a tutti i bordi del controllo.The AutoSizeControl method in this example also has a textPadding parameter that represents the padding to apply to all edges of the control. Per fare in modo che la spaziatura interna appaia uguale, MiddleCenter allineare il System.Drawing.ContentAlignment testo con il valore di se il controllo lo supporta.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

Commenti

L' Graphics oggetto recuperato tramite il CreateGraphics metodo non deve essere normalmente mantenuto dopo l'elaborazione del messaggio di Windows corrente, perché qualsiasi elemento disegnato con tale oggetto verrà cancellato con il messaggio WM_PAINT successivo.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. Non è pertanto possibile memorizzare Graphics nella cache l'oggetto per riutilizzarlo, tranne per l' Graphics.MeasureStringutilizzo di metodi non visivi come.Therefore you cannot cache the Graphics object for reuse, except to use non-visual methods like Graphics.MeasureString. Al contrario, è necessario CreateGraphics chiamare ogni volta che si desidera utilizzare l' Graphics oggetto e quindi chiamare Dispose al termine dell'utilizzo.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. Per ulteriori informazioni sui messaggi di Windows, WndProcvedere.For more information about Windows messages, see WndProc.

Per impostazione predefinita CreateGraphics , imposta la proprietà sul thread chiamante e ha esito negativo se viene chiamato su altri thread.By design, CreateGraphics sets ownership to the calling thread, and fails if it is called on other threads.

Nota

Oltre InvokeRequired alla proprietà, sono disponibili quattro metodi per un controllo thread-safe: Invoke, BeginInvoke, EndInvokee CreateGraphics se è già stato creato l'handle per il controllo.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. La CreateGraphics chiamata prima della creazione dell'handle del controllo in un thread in background può causare chiamate cross-thread non valide.Calling CreateGraphics before the control's handle has been created on a background thread can cause illegal cross thread calls. Per tutte le altre chiamate al metodo, è necessario usare uno dei metodi Invoke per effettuare il marshalling della chiamata al thread del controllo.For all other method calls, you should use one of the invoke methods to marshal the call to the control's thread.

Sicurezza

UIPermission
per sottofinestre sicure per chiamare questo metodo.for safe subwindows to call this method. Enumerazione associata: SafeSubWindows valore di UIPermissionWindow.Associated enumeration: SafeSubWindows value of UIPermissionWindow.

Si applica a

Vedi anche