Sdílet prostřednictvím


Control.CreateGraphics Metoda

Definice

Graphics Vytvoří ovládací prvek.

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

Návraty

Graphics

Ovládací Graphics prvek.

Příklady

Následující příklad kódu změní velikost zadaného ovládacího prvku tak, aby ovládací prvek vyhovoval jeho formátovanému textu. Formátovaný text je Text vlastnost s přiřazeným Font ovládacím prvku použitým pro text. Metoda AutoSizeControl v tomto příkladu textPadding má také parametr, který představuje odsazení, které se použije na všechny okraje ovládacího prvku. Pokud chcete, aby se odsazení zobrazilo stejně, zarovnejte text s MiddleCenter hodnotou, jestli ho System.Drawing.ContentAlignment ovládací prvek podporuje.

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

Poznámky

Objekt Graphics , který načítáte metodou CreateGraphics , by neměl být normálně zachován po zpracování aktuální zprávy systému Windows, protože cokoli namalované s tímto objektem se vymaže s další WM_PAINT zprávou. Proto nelze objekt uložit do mezipaměti Graphics pro opakované použití, s výjimkou použití ne vizuálních metod, jako je Graphics.MeasureString. Místo toho musíte volat CreateGraphics pokaždé, když chcete objekt použít Graphics , a potom volat Dispose , až ho budete hotovi používat. Další informace o zprávách systému Windows naleznete v tématu WndProc.

Podle návrhu CreateGraphics nastaví vlastnictví volajícího vlákna a selže, pokud se volá na jiných vláknech.

Poznámka

Kromě InvokeRequired vlastnosti existují čtyři metody ovládacího prvku, který je bezpečný pro vlákno: Invoke, BeginInvoke, EndInvokea CreateGraphics pokud popisovač pro ovládací prvek již byl vytvořen. Volání CreateGraphics před vytvořením popisovače ovládacího prvku ve vlákně na pozadí může způsobit nelegální volání mezi vlákny. U všech ostatních volání metod byste měli použít jednu z metod vyvolání pro zařazování volání do vlákna ovládacího prvku.

Platí pro

Viz také