This documentation is archived and is not being maintained.

Graphics.FromHdc Method (IntPtr)

Creates a new Graphics from the specified handle to a device context.

Namespace:  System.Drawing
Assembly:  System.Drawing (in System.Drawing.dll)

public static Graphics FromHdc(
	IntPtr hdc
)

Parameters

hdc
Type: System.IntPtr
Handle to a device context.

Return Value

Type: System.Drawing.Graphics
This method returns a new Graphics for the specified device context.

You should always call the Dispose method to release the Graphics and related resources created by the FromHdc method.

Even if the display device has an associated ICM color profile, GDI+ will not use that profile by default. To enable ICM for a Graphics, construct the Graphics from an HDC after you pass the HDC (and ICM_ON) to the SetICMMode function. Then any drawing done by the Graphics will be adjusted according to the ICM profile associated with the display device. Enabling ICM will result in slower performance.

The state of the device context (mapping mode, logical unit, and the like) at the time you call FromHdc can affect rendering done by the Graphics.

The following code example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of the Paint event handler. The code performs the following action:

  • Creates an internal pointer type variable hdc and sets it to the handle to the device context of the graphics object of the form.

  • Creates a new graphics object using hdc.

  • Draws a rectangle with the new graphics object (on the screen).

  • Releases the new graphics object using hdc.


[System.Security.Permissions.SecurityPermission(
System.Security.Permissions.SecurityAction.LinkDemand, Flags = 
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]            
private void FromHdcHdc(PaintEventArgs e)
{

    // Get handle to device context.
    IntPtr hdc = e.Graphics.GetHdc();

    // Create new graphics object using handle to device context.
    Graphics newGraphics = Graphics.FromHdc(hdc);

    // Draw rectangle to screen.
    newGraphics.DrawRectangle(new Pen(Color.Red, 3), 0, 0, 200, 100);

    // Release handle to device context and dispose of the      // Graphics object
    e.Graphics.ReleaseHdc(hdc);
    newGraphics.Dispose();
}


.NET Framework

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

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Show: