Control Methods


.NET Framework Class Library
Control..::.CreateGraphics Method

Updated: July 2008

Creates the Graphics for the control.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
Syntax

Visual Basic (Declaration)
Public Function CreateGraphics As Graphics
Visual Basic (Usage)
Dim instance As Control
Dim returnValue As Graphics

returnValue = instance.CreateGraphics()
C#
public Graphics CreateGraphics()
Visual C++
public:
Graphics^ CreateGraphics()
JScript
public function CreateGraphics() : Graphics

Return Value

Type: System.Drawing..::.Graphics
The Graphics for the control.
Remarks

The Graphics object that you retrieve through the CreateGraphics method is not valid after the current Windows message has been processed. You cannot cache the Graphics object for reuse. Instead, you must call CreateGraphics every time that you want to use the Graphics object, and then call Dispose when you are finished using it. For more information about Windows messages, see WndProc.

By design, CreateGraphics sets ownership to the calling thread, and fails if it is called on other threads.

NoteNote:

In addition to the InvokeRequired property, there are four methods on a control that are thread safe: Invoke, BeginInvoke, EndInvoke, and CreateGraphics if the handle for the control has already been created. Calling CreateGraphics before the control's handle has been created on a background thread can cause illegal cross thread calls. For all other method calls, you should use one of the invoke methods to marshal the call to the control's thread.

Examples

The following code example resizes the specified control so the control will accommodate its formatted text. The formatted text is the Text property with the control's assigned Font applied to the text. The AutoSizeControl method in this example also has a textPadding parameter that represents the padding to apply to all edges of the control. To make the padding appear equal, align the text with the MiddleCenter value of System.Drawing..::.ContentAlignment if your control supports it.

Visual Basic
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
C#
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();
}
Visual C++
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;
   }
.NET Framework Security

Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0
See Also

Reference

Change History

Date

History

Reason

July 2008

Revised the first paragraph in the Remarks section to clarify the lifetime of the retrieved Graphics object.

Customer feedback.

Tags :


Page view tracker