Control.CreateGraphics Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Létrehozza a Graphics vezérlőt.
public:
System::Drawing::Graphics ^ CreateGraphics();
public System.Drawing.Graphics CreateGraphics();
member this.CreateGraphics : unit -> System.Drawing.Graphics
Public Function CreateGraphics () As Graphics
Válaszok
A Graphics vezérlőhöz.
Példák
Az alábbi példakód átméretezi a megadott vezérlőt, hogy a vezérlőelem elférjen a formázott szövegben. A formázott szöveg az a Text tulajdonság, amelyhez a vezérlőelem hozzá van rendelve Font . A AutoSizeControl példában szereplő metódus egy paraméterrel is rendelkezik textPadding , amely a vezérlő minden szélére alkalmazandó kitöltést jelöli. Ha egyenlőnek szeretné tenni a kitöltést, igazítsa a szöveget annak MiddleCenter értékéhez System.Drawing.ContentAlignment , ha a vezérlőelem támogatja azt.
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
Megjegyzések
A Graphics metóduson keresztül lekért CreateGraphics objektumot általában nem szabad megőrizni az aktuális Windows üzenet feldolgozása után, mert az objektummal festett elemek a következő WM_PAINT üzenettel törlődnek. Ezért nem gyorsítótárazhatja újra az Graphics objektumot, kivéve a nem vizualizációs módszereket, például Graphics.MeasureString. Ehelyett minden alkalommal fel kell hívnia CreateGraphics , hogy használni szeretné az Graphics objektumot, majd amikor befejezte a használatát, hívnia Dispose kell. A Windows üzenetekkel kapcsolatos további információkért lásd: WndProc.
A terv CreateGraphics szerint a hívó szál tulajdonjogát állítja be, és sikertelen lesz, ha más szálakra kérik.
Note
A tulajdonságon kívül InvokeRequired egy vezérlőn négy olyan metódus is található, amelyek szálbiztosak: Invoke, BeginInvoke, EndInvokeés CreateGraphics ha a vezérlő leírója már létrejött. A háttérszálon a vezérlő leírójának létrehozása előtt történő hívás CreateGraphics illegális szálközi hívásokat okozhat. Az összes többi metódushívás esetében az egyik meghívási metódust kell használnia a vezérlő szálára irányuló hívás átirányításához.