Bagikan melalui


Control.CreateGraphics Metode

Definisi

Graphics Membuat untuk kontrol.

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

Mengembalikan

Untuk Graphics kontrol.

Contoh

Contoh kode berikut mengubah ukuran kontrol yang ditentukan sehingga kontrol akan mengakomodasi teks yang diformat. Teks yang diformat Text adalah properti dengan kontrol yang ditetapkan Font diterapkan ke teks. Metode AutoSizeControl dalam contoh ini juga memiliki textPadding parameter yang mewakili padding untuk diterapkan ke semua tepi kontrol. Untuk membuat padding tampak sama, ratakan teks dengan MiddleCenter nilai System.Drawing.ContentAlignment jika kontrol Anda mendukungnya.

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

Keterangan

Objek Graphics yang Anda ambil melalui CreateGraphics metode biasanya tidak boleh dipertahankan setelah pesan Windows saat ini diproses, karena apa pun yang dicat dengan objek tersebut akan dihapus dengan pesan WM_PAINT berikutnya. Oleh karena itu Anda tidak dapat menyimpan Graphics objek untuk digunakan kembali, kecuali untuk menggunakan metode non-visual seperti Graphics.MeasureString. Sebagai gantinya, Anda harus memanggil CreateGraphics setiap kali Anda ingin menggunakan Graphics objek, lalu memanggil Dispose ketika Anda selesai menggunakannya. Untuk informasi selengkapnya tentang pesan Windows, lihat WndProc.

Secara desain, CreateGraphics mengatur kepemilikan ke utas panggilan, dan gagal jika dipanggil pada utas lain.

Nota

Selain InvokeRequired properti , ada empat metode pada kontrol yang aman utas: Invoke, , BeginInvokeEndInvoke, dan CreateGraphics jika handel untuk kontrol telah dibuat. Memanggil CreateGraphics sebelum handel kontrol dibuat pada utas latar belakang dapat menyebabkan panggilan lintas utas ilegal. Untuk semua panggilan metode lainnya, Anda harus menggunakan salah satu metode pemanggilan untuk melakukan marshal panggilan ke utas kontrol.

Berlaku untuk

Lihat juga