次の方法で共有


Graphics.GetHalftonePalette メソッド

現在の Windows ハーフトーン パレットを識別するハンドルを取得します。

Public Shared Function GetHalftonePalette() As IntPtr
[C#]
public static IntPtr GetHalftonePalette();
[C++]
public: static IntPtr GetHalftonePalette();
[JScript]
public static function GetHalftonePalette() : IntPtr;

戻り値

パレットを識別するハンドルを指定する内部ポインタ。

解説

GetHalftonePalette メソッドの目的は、8 ビット/ピクセルの表示を使用する場合に GDI+ で生成するハーフトーンの品質を向上させることです。ハーフトーン パレットを使用してイメージを表示するには、次の手順に従います。

使用例

[Visual Basic, C#] 次の例は、Windows フォームでの使用を意図してデザインされており、 Paint イベント ハンドラのパラメータである PaintEventArgs e が必要です。このコードは次のアクションを実行します。

  • 必要な GDI 関数が格納された、Windows DLL ファイル gdi32.dll の相互運用性 DllImportAttribute 属性を定義します。
  • その DLL の SelectPalette 関数と RealizePalette 関数を外部関数として定義します。
  • 既存のイメージ ファイル SampImag.jpg (サンプルのコード ファイルと同じフォルダに置く必要があります) からイメージを作成し、画面にそのイメージを描画します。
  • 内部ポインタ型変数を作成し、それらの値を e . Graphics オブジェクトを識別するハンドルと、現在の Windows ハーフトーン パレットを識別するハンドルにそれぞれ設定します。
  • ハーフトーン パレットを選択および認識します。
  • hdc パラメータを使用して、新しいグラフィックス オブジェクトを作成します。
  • イメージを再度描画します。
  • デバイス コンテキストを識別するハンドルを解放します。

[Visual Basic, C#] 16 ビット パレットと 8 ビット パレットを使用して、サンプル イメージの 2 つのレンダリングが生成されます。

 
<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")>  _
Private Shared Function SelectPalette(hdc As IntPtr, _
htPalette As IntPtr, bForceBackground As Boolean) As IntPtr
End Function
<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")>  _
Private Shared Function RealizePalette(hdc As IntPtr) As Integer
End Function
Public Sub GetHalftonePaletteVoid(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
        
[C#] 
[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);
public 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);
}
        

[C++, JScript] C++ および JScript のサンプルはありません。Visual Basic および C# のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

Graphics クラス | Graphics メンバ | System.Drawing 名前空間