Control.CreateGraphics Metoda

Definicja

Tworzy kontrolkę Graphics dla kontrolki.

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

Zwraca

Graphics

Element Graphics dla kontrolki.

Przykłady

Poniższy przykład kodu zmienia rozmiar określonej kontrolki, aby kontrolka uwzględniła sformatowany tekst. Sformatowany tekst jest Text właściwością z przypisanym Font formantem do tekstu. Metoda AutoSizeControl w tym przykładzie zawiera textPadding również parametr reprezentujący wypełnienie, które ma być stosowane do wszystkich krawędzi kontrolki. Aby wyrównać dopełnienie, wyrównaj tekst do MiddleCenter wartości System.Drawing.ContentAlignment , jeśli kontrolka ją obsługuje.

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

Uwagi

Graphics Obiekt pobierany za pośrednictwem metody nie powinien być zwykle zachowywany po przetworzeniu CreateGraphics bieżącego komunikatu systemu Windows, ponieważ wszystkie elementy malowane z tym obiektem zostaną wymazane z następnym komunikatem WM_PAINT. W związku z tym nie można buforować Graphics obiektu do ponownego użycia, z wyjątkiem używania metod innych niż wizualne, takich jak Graphics.MeasureString. Zamiast tego należy wywołać CreateGraphics metodę za każdym razem, gdy chcesz użyć obiektu, a następnie wywołać Dispose metodę po zakończeniu Graphics korzystania z niego. Aby uzyskać więcej informacji na temat komunikatów systemu Windows, zobacz WndProc.

Zgodnie z projektem CreateGraphics ustawia własność na wątek wywołujący i kończy się niepowodzeniem, jeśli jest wywoływany w innych wątkach.

Uwaga

Oprócz InvokeRequired właściwości istnieją cztery metody w kontrolce, które są bezpieczne wątkiem: Invoke, BeginInvoke, EndInvokei CreateGraphics jeśli uchwyt dla kontrolki został już utworzony. Wywołanie CreateGraphics metody przed utworzeniem dojścia kontrolki w wątku w tle może spowodować nielegalne wywołania międzywątkowa. W przypadku wszystkich innych wywołań metody należy użyć jednej z metod wywołania do marshalingu wywołania do wątku kontrolki.

Dotyczy

Zobacz też