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 element 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
Dla Graphics kontrolki.
Przykłady
Poniższy przykład kodu zmienia rozmiar określonej kontrolki, aby kontrolka pomieściła sformatowany tekst. Sformatowany tekst jest Text właściwością z przypisaną kontrolką do Font tekstu. Metoda AutoSizeControl w tym przykładzie zawiera textPadding również parametr reprezentujący dopełnienie do zastosowania do wszystkich krawędzi kontrolki. Aby ustawić, że dopełnienie jest równe, 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 CreateGraphics metody nie powinien być zwykle zachowywany po przetworzeniu 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ć wywołanie CreateGraphics za każdym razem, gdy chcesz użyć obiektu, a następnie wywołać wywołanie Dispose 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ść wątku wywołującego 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 kontrolki, które są bezpieczne wątkiem: Invoke, BeginInvoke, EndInvokei CreateGraphics jeśli uchwyt dla kontrolki został już utworzony. Wywołanie przed CreateGraphics utworzeniem uchwytu kontrolki w wątku w tle może spowodować nielegalne wywołania między wątkami. W przypadku wszystkich innych wywołań metody należy użyć jednej z metod wywołania, aby przeprowadzić wywołanie do wątku kontrolki.