Graphics.GetHalftonePalette Method ()


Gets a handle to the current Windows halftone palette.

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

Public Shared Function GetHalftonePalette As IntPtr

Return Value

Type: System.IntPtr

Internal pointer that specifies the handle to the palette.

The purpose of the GetHalftonePalette method is to enable GDI+ to produce a better quality halftone when the display uses 8 bits per pixel. To display an image using the halftone palette, use the following procedure.

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

  • Defines interoperability DllImportAttribute attributes for the Windows DLL file gdi32.dll, which contains the necessary GDI functions.

  • Defines the SelectPalette and RealizePalette functions in that DLL as external.

  • Creates an image from an existing image file SampImag.jpg (which must be in the same folder as the example code file) and draws the image to the screen.

  • Creates internal pointer type variables and sets their values to the handle to the graphics object and to the current Windows halftone palette, respectively.

  • Selects and realizes the halftone palette.

  • Creates a new graphics object using the hdc parameter.

  • Draws the image again.

  • Releases the handle to the device context.

The result is two renderings of the sample image: one with the 16-bit palette and one with the 8-bit palette.

<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _
Private Shared Function SelectPalette(ByVal hdc As IntPtr, _
ByVal htPalette As IntPtr, ByVal bForceBackground As Boolean) As IntPtr
End Function

<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _
Private Shared Function RealizePalette(ByVal hdc As IntPtr) As Integer
End Function

<System.Security.Permissions.SecurityPermission( _
System.Security.Permissions.SecurityAction.LinkDemand, Flags:= _
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
Private Sub GetHalftonePaletteVoid(ByVal e As PaintEventArgs)

    ' Create and draw image.
    Dim imageFile As Image = Image.FromFile("SampImag.jpg")
    e.Graphics.DrawImage(imageFile, New Point(0, 0))

    ' Get handle to device context.
    Dim hdc As IntPtr = e.Graphics.GetHdc()

    ' Get handle to halftone palette.
    Dim htPalette As IntPtr = Graphics.GetHalftonePalette()

    ' Select and realize new palette.
    SelectPalette(hdc, htPalette, True)

    ' Create new graphics object.
    Dim newGraphics As Graphics = Graphics.FromHdc(hdc)

    ' Draw image with new palette.
    newGraphics.DrawImage(imageFile, 300, 0)

    ' Release handle to device context.
End Sub

.NET Framework
Available since 1.1
Return to top