Control.CreateGraphics Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy kontrolkę Graphics dla kontrolki.
public:
System::Drawing::Graphics ^ CreateGraphics();
public System.Drawing.Graphics CreateGraphics ();
member this.CreateGraphics : unit -> System.Drawing.Graphics
Public Function CreateGraphics () As Graphics
Zwraca
Element Graphics dla kontrolki.
Przykłady
Poniższy przykład kodu zmienia rozmiar określonej kontrolki, aby kontrolka uwzględniła sformatowany tekst. Sformatowany tekst jest Text właściwością z przypisanym Font formantem do tekstu. Metoda AutoSizeControl
w tym przykładzie zawiera textPadding
również parametr reprezentujący wypełnienie, które ma być stosowane do wszystkich krawędzi kontrolki. Aby wyrównać dopełnienie, wyrównaj tekst do MiddleCenter
wartości System.Drawing.ContentAlignment , jeśli kontrolka ją obsługuje.
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
Uwagi
Graphics Obiekt pobierany za pośrednictwem metody nie powinien być zwykle zachowywany po przetworzeniu CreateGraphics bieżącego komunikatu systemu Windows, ponieważ wszystkie elementy malowane z tym obiektem zostaną wymazane z następnym komunikatem WM_PAINT. W związku z tym nie można buforować Graphics obiektu do ponownego użycia, z wyjątkiem używania metod innych niż wizualne, takich jak Graphics.MeasureString. Zamiast tego należy wywołać CreateGraphics metodę za każdym razem, gdy chcesz użyć obiektu, a następnie wywołać Dispose metodę po zakończeniu Graphics korzystania z niego. Aby uzyskać więcej informacji na temat komunikatów systemu Windows, zobacz WndProc.
Zgodnie z projektem CreateGraphics ustawia własność na wątek wywołujący i kończy się niepowodzeniem, jeśli jest wywoływany w innych wątkach.
Uwaga
Oprócz InvokeRequired właściwości istnieją cztery metody w kontrolce, które są bezpieczne wątkiem: Invoke, BeginInvoke, EndInvokei CreateGraphics jeśli uchwyt dla kontrolki został już utworzony. Wywołanie CreateGraphics metody przed utworzeniem dojścia kontrolki w wątku w tle może spowodować nielegalne wywołania międzywątkowa. W przypadku wszystkich innych wywołań metody należy użyć jednej z metod wywołania do marshalingu wywołania do wątku kontrolki.