LEADTOOLS GDI/GDI+(Leadtools.Drawingアセンブリ)

フレームを表示

GetPaintHPaletteメソッド






ソースimage。
このLeadtools.RasterImageがあるデバイスコンテキストオブジェクトは、描画しました。
任意のデバイスコンテキストの上で描画されるならば、このLeadtools.RasterImageと一致しているWindowsパレットハンドルを返します。
構文
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
) 

パラメーター

image
ソースimage。
hdc
このLeadtools.RasterImageがあるデバイスコンテキストオブジェクトは、描画しました。

戻り値

Windowsパレットハンドル(HPALETTE)。それを使った後に、Windows DeleteObject APIでこのパレットを削除しなければなりません。
解説

詳細については、「RasterImageとGDI/GDI+」を参照してください。

詳細については、「パレット変更の処理」を参照してください。

サンプル
Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.Drawing
Imports Leadtools.ImageProcessing

' 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

<TestMethod()> _
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
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Drawing;
using Leadtools.ImageProcessing;

// 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);

[TestMethod]
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";
}
必要条件

ターゲットプラットホーム

参照

参照

RasterImagePainterクラス
RasterImagePainterメンバ