public static RasterImage FromHBitmap( IntPtr hbitmap, IntPtr hpalette )
'Declaration Public Overloads Shared Function FromHBitmap( _ ByVal hbitmap As IntPtr, _ ByVal hpalette As IntPtr _ ) As RasterImage
'Usage Dim hbitmap As IntPtr Dim hpalette As IntPtr Dim value As RasterImage value = RasterImageConverter.FromHBitmap(hbitmap, hpalette)
public static RasterImage FromHBitmap( IntPtr hbitmap, IntPtr hpalette )
public: static RasterImage^ FromHBitmap( IntPtr hbitmap, IntPtr hpalette )
For more information on DDBs and DIBs, refer to Using DIBs, DDBs, and the Clipboard.
For more information refer to RasterImage and GDI/GDI+.
<DllImport("gdi32")> _ Private Shared Function CreatePalette(ByVal lplgpl As LOGPALETTE256) As IntPtr End Function <DllImport("gdi32")> _ Private Shared Function DeleteObject(ByVal hObject As IntPtr) As Boolean End Function <StructLayout(LayoutKind.Sequential, Pack:=1)> _ Private Class LOGPALETTE256 Public palVersion As Short Public palNumEntries As Short <MarshalAs(UnmanagedType.ByValArray, SizeConst:=1024)> _ Public palPalEntry() As Byte End Class Public Sub FromHBitmapExample() Dim codecs As New RasterCodecs() ' load image as 8-bit Using image As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp"), 8, CodecsLoadByteOrder.Rgb, 1, 1) Dim hbitmap As IntPtr = IntPtr.Zero hbitmap = RasterImageConverter.ToHBitmap(image) Dim colors() As RasterColor Using btmp As New Bitmap(1, 1) Using g As Graphics = Graphics.FromImage(btmp) colors = RasterImagePainter.GetPaintColors(image, g) End Using End Using Dim hPalette As IntPtr = IntPtr.Zero If Not IsNothing(colors) AndAlso colors.Length <= 256 Then Dim log As New LOGPALETTE256() log.palVersion = &H300 log.palNumEntries = CType(colors.Length, Short) ReDim log.palPalEntry(1023) Dim index As Integer = 0 For i As Integer = 0 To colors.Length - 1 log.palPalEntry(index + 0) = colors(i).R log.palPalEntry(index + 1) = colors(i).G log.palPalEntry(index + 2) = colors(i).B log.palPalEntry(index + 3) = 0 index = index + 4 Next hPalette = CreatePalette(log) End If Using destinationImage As RasterImage = RasterImageConverter.FromHBitmap(hbitmap, hPalette) codecs.Save(destinationImage, Path.Combine(LEAD_VARS.ImagesDir, "Image1_FromHBitmap.bmp"), RasterImageFormat.Bmp, 0) End Using If hPalette <> IntPtr.Zero Then DeleteObject(hPalette) End If DeleteObject(hbitmap) End Using codecs.Dispose() End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
[DllImport("gdi32")] private static extern IntPtr CreatePalette(LOGPALETTE256 lplgpl); [DllImport("gdi32")] private static extern bool DeleteObject(IntPtr hObject); [StructLayout(LayoutKind.Sequential, Pack = 1)] private class LOGPALETTE256 { public short palVersion; public short palNumEntries; [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)] public byte[] palPalEntry; } public void FromHBitmapExample() { RasterCodecs codecs = new RasterCodecs(); // load image as 8-bit using(RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir,"Image1.cmp"), 8, CodecsLoadByteOrder.Rgb, 1, 1)) { IntPtr hbitmap = IntPtr.Zero; hbitmap = RasterImageConverter.ToHBitmap(image); RasterColor[] colors; using(Bitmap btmp = new Bitmap(1, 1)) { using(Graphics g = Graphics.FromImage(btmp)) { colors = RasterImagePainter.GetPaintColors(image, g); } } IntPtr hPalette = IntPtr.Zero; if(colors != null && colors.Length <= 256) { LOGPALETTE256 log = new LOGPALETTE256(); log.palVersion = 0x300; log.palNumEntries = (short)colors.Length; log.palPalEntry = new byte[1024]; int index = 0; for(int i = 0; i < colors.Length; i++) { log.palPalEntry[index++] = colors[i].R; log.palPalEntry[index++] = colors[i].G; log.palPalEntry[index++] = colors[i].B; log.palPalEntry[index++] = 0; } hPalette = CreatePalette(log); } using(RasterImage destinationImage = RasterImageConverter.FromHBitmap(hbitmap, hPalette)) { codecs.Save(destinationImage,Path.Combine(LEAD_VARS.ImagesDir, "Image1_FromHBitmap.bmp"), RasterImageFormat.Bmp, 0); } if(hPalette != IntPtr.Zero) { DeleteObject(hPalette); } DeleteObject(hbitmap); } 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