LEADTOOLS GDI/GDI+ (Leadtools.Drawing assembly)
LEAD Technologies, Inc

GetPaintHPalette Method

Example 





The source image.
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
public static IntPtr GetPaintHPalette( 
   RasterImage image,
   IntPtr hdc
)
'Declaration
 
Public Shared Function GetPaintHPalette( _
   ByVal image As RasterImage, _
   ByVal hdc As IntPtr _
) As IntPtr
'Usage
 
Dim image As RasterImage
Dim hdc As IntPtr
Dim value As IntPtr
 
value = RasterImagePainter.GetPaintHPalette(image, hdc)
public static IntPtr GetPaintHPalette( 
   RasterImage image,
   IntPtr hdc
)
 function Leadtools.Drawing.RasterImagePainter.GetPaintHPalette( 
   image ,
   hdc 
)
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.
Remarks

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

For more information, refer to Handling Palette Changes.

Example
 
' 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
// 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";
}
Requirements

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

See Also

Reference

RasterImagePainter Class
RasterImagePainter Members

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.