LEADTOOLS GDI/GDI+ (Leadtools.Drawing assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.29
GetPaintHPalette Method
See Also 



image
The source image.
hdc
The device context object on which this Leadtools.RasterImage is painted.
image
The source image.
hdc
The device context object on which this Leadtools.RasterImage is painted.
Returns a Windows palette handle corresponding to this Leadtools.RasterImage if painted on the given device context.

Syntax

Visual Basic (Declaration) 
Public Shared Function GetPaintHPalette( _
   ByVal image As RasterImage, _
   ByVal hdc As IntPtr _
) As IntPtr
Visual Basic (Usage)Copy Code
Dim image As RasterImage
Dim hdc As IntPtr
Dim value As IntPtr
 
value = RasterImagePainter.GetPaintHPalette(image, hdc)
C# 
public static IntPtr GetPaintHPalette( 
   RasterImage image,
   IntPtr hdc
)
C++/CLI 
public:
static IntPtr GetPaintHPalette( 
   RasterImage^ image,
   IntPtr hdc
) 

Parameters

image
The source image.
hdc
The device context object on which this Leadtools.RasterImage is painted.

Return Value

A Windows palette handle (HPALETTE). You must delete this palette with the Windows DeleteObject API after using it.

Example

Visual BasicCopy Code
' Windows API
   <DllImport("Gdi32")> _
   Private Shared Function GetPaletteEntries(ByVal hpal As IntPtr, ByVal nStartIndex As UInt32, ByVal nNumEntries As UInt32, <InAttribute(), Out()> ByVal colors() As Byte) As UInt32
   End Function
   <DllImport("Gdi32")> _
   Private Shared Function DeleteObject(ByVal hObject As IntPtr) As Integer
   End Function


   Public Sub GetPaintHPaletteExample()
      Dim codecs As New RasterCodecs()
      Dim image As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"), 8, CodecsLoadByteOrder.Rgb, 1, 1)

      Dim hpalette As IntPtr = RasterImagePainter.GetPaintHPalette(image, IntPtr.Zero)
      If hpalette <> IntPtr.Zero Then
         ' Show the pal

         ' 4 bytes for each color
         Dim colors(256 * 4 - 1) As Byte
         GetPaletteEntries(hpalette, 0, 256, colors)
         Dim index As Integer = 0
         For i As Integer = 0 To 255
            Console.WriteLine("{0] - {1], {2], {3]", i, colors(index + 0), colors(index + 1), colors(index + 2))
            index = index + 4
         Next

         DeleteObject(hpalette)
      Else
         Console.WriteLine("There is no palette")
      End If

      image.Dispose()
      codecs.Dispose()
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
C#Copy Code
// Windows API
   [DllImport("Gdi32")]
   private static extern uint GetPaletteEntries(IntPtr hpal, uint nStartIndex, uint nNumEntries, [In, Out] byte[] colors);
   [DllImport("Gdi32")]
   private static extern int DeleteObject(IntPtr hObject);


   public void GetPaintHPaletteExample()
   {
      RasterCodecs codecs = new RasterCodecs();
      RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"), 8, CodecsLoadByteOrder.Rgb, 1, 1);

      IntPtr hpalette = RasterImagePainter.GetPaintHPalette(image, IntPtr.Zero);
      if(hpalette != IntPtr.Zero)
      {
         // Show the pal

         // 4 bytes for each color
         byte[] colors = new byte[256 * 4];
         GetPaletteEntries(hpalette, 0, 256, colors);
         int index = 0;
         for(int i = 0; i < 256; i++)
         {
            Console.WriteLine("{0} - {1}, {2}, {3}", i, colors[index + 0], colors[index + 1], colors[index + 2]);
            index += 4;
         }

         DeleteObject(hpalette);
      }
      else
      {
         Console.WriteLine("There is no palette");
      }

      image.Dispose();
      codecs.Dispose();
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}

Remarks

For more information refer to RasterImage and GDI/GDI+.

For more information, refer to Handling Palette Changes.

Requirements

Target Platforms: Silverlight 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)

See Also