Control.CreateGraphics Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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 MiddleCenter
System.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.