Graphics.GetHalftonePalette Graphics.GetHalftonePalette Graphics.GetHalftonePalette Graphics.GetHalftonePalette Method

定義

現在の Windows ハーフトーン パレットを識別するハンドルを取得します。Gets a handle to the current Windows halftone palette.

public:
 static IntPtr GetHalftonePalette();
public static IntPtr GetHalftonePalette ();
static member GetHalftonePalette : unit -> nativeint
Public Shared Function GetHalftonePalette () As IntPtr

戻り値

パレットを識別するハンドルを指定する内部ポインター。Internal pointer that specifies the handle to the palette.

次のコード例は、Windows フォームで使用するために設計されています。 また必要がPaintEventArgs e、はのパラメーター、Paintイベント ハンドラー。The following code example is designed for use with Windows Forms, and it requires PaintEventArgse, which is a parameter of the Paint event handler. コードは、次のアクションを実行します。The code performs the following actions:

  • 相互運用性を定義します。DllImportAttribute属性を含む、必要な Windows の DLL ファイル gdi32.dllGDIGDI関数。Defines interoperability DllImportAttribute attributes for the Windows DLL file gdi32.dll, which contains the necessary GDIGDI functions.

  • 定義、SelectPaletteRealizePalette外部では、その DLL 内の関数。Defines the SelectPalette and RealizePalette functions in that DLL as external.

  • 既存のイメージ ファイル (この例のコード ファイルと同じフォルダーにある必要があります) SampImag.jpg からイメージを作成し、画面にイメージを描画します。Creates an image from an existing image file SampImag.jpg (which must be in the same folder as the example code file) and draws the image to the screen.

  • 内部ポインター型の変数を作成し、グラフィックス オブジェクトに、現在の Windows ハーフトーン パレットを処理するそれぞれの値を設定します。Creates internal pointer type variables and sets their values to the handle to the graphics object and to the current Windows halftone palette, respectively.

  • 選択およびハーフトーン パレットを認識します。Selects and realizes the halftone palette.

  • 新しいグラフィックス オブジェクトを作成、hdcパラメーター。Creates a new graphics object using the hdc parameter.

  • もう一度画像を描画します。Draws the image again.

  • デバイス コンテキストを識別するハンドルを解放します。Releases the handle to the device context.

結果は、2 つのサンプル イメージを表示する場合: 8 ビット パレットで 1 つの 16 ビット パレットと 1 つ。The result is two renderings of the sample image: one with the 16-bit palette and one with the 8-bit palette.

private:
   [System::Runtime::InteropServices::DllImportAttribute("gdi32.dll")]
   static IntPtr SelectPalette( IntPtr hdc, IntPtr htPalette, bool bForceBackground );

   [System::Runtime::InteropServices::DllImportAttribute("gdi32.dll")]
   static int RealizePalette( IntPtr hdc );

public:
   void GetHalftonePaletteVoid( PaintEventArgs^ e )
   {
      // Create and draw image.
      Image^ imageFile = Image::FromFile( "SampImag.jpg" );
      e->Graphics->DrawImage( imageFile, Point(0,0) );

      // Get handle to device context.
      IntPtr hdc = e->Graphics->GetHdc();

      // Get handle to halftone palette.
      IntPtr htPalette = Graphics::GetHalftonePalette();

      // Select and realize new palette.
      SelectPalette( hdc, htPalette, true );
      RealizePalette( hdc );

      // Create new graphics object.
      Graphics^ newGraphics = Graphics::FromHdc( hdc );

      // Draw image with new palette.
      newGraphics->DrawImage( imageFile, 300, 0 );

      // Release handle to device context.
      e->Graphics->ReleaseHdc( hdc );
   }
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern IntPtr SelectPalette(
    IntPtr hdc,
    IntPtr htPalette,
    bool bForceBackground);
[System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")]
private static extern int RealizePalette(IntPtr hdc);

[System.Security.Permissions.SecurityPermission(
System.Security.Permissions.SecurityAction.LinkDemand, Flags = 
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)]            
private void GetHalftonePaletteVoid(PaintEventArgs e)
{

    // Create and draw image.
    Image imageFile = Image.FromFile("SampImag.jpg");
    e.Graphics.DrawImage(imageFile, new Point(0, 0));

    // Get handle to device context.
    IntPtr hdc = e.Graphics.GetHdc();

    // Get handle to halftone palette.
    IntPtr htPalette = Graphics.GetHalftonePalette();

    // Select and realize new palette.
    SelectPalette(hdc, htPalette, true);
    RealizePalette(hdc);

    // Create new graphics object.
    Graphics newGraphics = Graphics.FromHdc(hdc);

    // Draw image with new palette.
    newGraphics.DrawImage(imageFile, 300, 0);

    // Release handle to device context.
    e.Graphics.ReleaseHdc(hdc);
}
<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _
Private Shared Function SelectPalette(ByVal hdc As IntPtr, _
ByVal htPalette As IntPtr, ByVal bForceBackground As Boolean) As IntPtr
End Function

<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _
Private Shared Function RealizePalette(ByVal hdc As IntPtr) As Integer
End Function

<System.Security.Permissions.SecurityPermission( _
System.Security.Permissions.SecurityAction.LinkDemand, Flags:= _
System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)> _
Private Sub GetHalftonePaletteVoid(ByVal e As PaintEventArgs)

    ' Create and draw image.
    Dim imageFile As Image = Image.FromFile("SampImag.jpg")
    e.Graphics.DrawImage(imageFile, New Point(0, 0))

    ' Get handle to device context.
    Dim hdc As IntPtr = e.Graphics.GetHdc()

    ' Get handle to halftone palette.
    Dim htPalette As IntPtr = Graphics.GetHalftonePalette()

    ' Select and realize new palette.
    SelectPalette(hdc, htPalette, True)
    RealizePalette(hdc)

    ' Create new graphics object.
    Dim newGraphics As Graphics = Graphics.FromHdc(hdc)

    ' Draw image with new palette.
    newGraphics.DrawImage(imageFile, 300, 0)

    ' Release handle to device context.
    e.Graphics.ReleaseHdc(hdc)
End Sub

注釈

目的、GetHalftonePaletteメソッドが有効にするにはGDI+GDI+ディスプレイが 1 ピクセルあたり 8 ビットを使用する場合より優れた品質ハーフトーンを生成するためにします。The purpose of the GetHalftonePalette method is to enable GDI+GDI+ to produce a better quality halftone when the display uses 8 bits per pixel. ハーフトーン パレットを使用してイメージを表示するには、次の手順を使用します。To display an image using the halftone palette, use the following procedure.

適用対象