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 )
public: static IntPtr GetPaintHPalette( RasterImage^ image, IntPtr hdc )
For more information refer to RasterImage and GDI/GDI+.
For more information, refer to Handling Palette Changes.
' 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"; }
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