Control.CreateGraphics Yöntem

Tanım

Denetim için öğesini Graphics oluşturur.

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

Döndürülenler

Graphics denetimi için.

Örnekler

Aşağıdaki kod örneği, denetimin biçimlendirilmiş metni barındırması için belirtilen denetimi yeniden boyutlandırır. Biçimlendirilmiş metin, denetimin metne atandığı Font özelliktirText. AutoSizeControl Bu örnekteki yöntemi, denetimin tüm kenarlarına uygulanacak doldurmayı temsil eden bir textPadding parametreye de sahiptir. Doldurmanın eşit görünmesini sağlamak için, denetiminiz destekliyorsa metni değeriyle MiddleCenterSystem.Drawing.ContentAlignment hizalayın.

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

Açıklamalar

Graphics Yöntemi aracılığıyla CreateGraphics aldığınız nesne, geçerli Windows iletisi işlendikten sonra normalde korunmamalıdır, çünkü bu nesneyle boyanan her şey sonraki WM_PAINT iletisiyle silinir. Bu nedenle, gibi Graphics.MeasureStringgörsel olmayan yöntemler kullanmak dışında nesneyi yeniden kullanmak üzere önbelleğe Graphics alamazsınız. Bunun yerine, nesnesini kullanmak Graphics istediğiniz her zaman çağrısı CreateGraphics yapmalı ve ardından kullanmayı bitirdiğinizde çağırmalısınızDispose. Windows iletileri hakkında daha fazla bilgi için bkz WndProc. .

Tasarım gereği, CreateGraphics sahipliği çağıran iş parçacığına ayarlar ve diğer iş parçacıklarında çağrılırsa başarısız olur.

Not

özelliğine InvokeRequired ek olarak, bir denetimde iş parçacığı güvenli olan dört yöntem vardır: Invoke, BeginInvoke, EndInvokeve CreateGraphics denetimin tanıtıcısı zaten oluşturulmuşsa. Denetimin tanıtıcısı bir arka plan iş parçacığında oluşturulmadan önce çağrılması CreateGraphics , iş parçacıkları arası geçersiz çağrılara neden olabilir. Diğer tüm yöntem çağrıları için çağrıyı denetimin iş parçacığına sıralamak için çağırma yöntemlerinden birini kullanmanız gerekir.

Şunlara uygulanır

Ayrıca bkz.