2016-05-06 7 views
1

以下の関数でIntPtr.Zeroの正確な意味を取得する必要があります。 この機能は、ワード文書のテキスト範囲のピクセル値をWPF単位の値に変換するために使用しました。System.Drawing.GraphicsのIntPtr.Zeroの意味

Graphics g = Graphics.FromHwnd(IntPtr.Zero) 

通常、ハンドルを渡すと言われましたが、私はそれを取得しませんでした。

答えて

2

Graphics.FromHwndメソッドを使用して、指定されたウィンドウのハンドラからGraphicsオブジェクトを作成します。

IntPtr.Zeroをパラメータとして渡すと、画面に直接描画できるWindowsデスクトップからGraphicsが作成されます。

1

IntPtrは、ハンドルまたはポインタを表すためのプラットフォーム固有の方法です。 32ビットシステムでは、ポインタは32ビット幅であり、64ビットシステムでは64ビット幅である。このタイプは、あなたとの違いを隠すために存在します。

IntPtr.Zeroは、値が0(本質的にはnull)のハンドルまたはポインタを表します。あなたの例のFromHwnd呼び出しのように、APIがWindows APIスタイルのハンドルを期待する場所で、このAPIを使用することができます。 Windows APIでは、HWNDはウィンドウハンドルです。ヌルは「ウィンドウなし」を示します。これをC#で渡すには、IntPtr.Zeroを使用します。

+0

* "Windows APIでは、HWNDはウィンドウハンドルです.nullは"ウィンドウなし "を示します。" * - Windows APIにはこのような規則はありません。 'HWND'引数がオプションであるときはいつでも、それは特定のセマンティクスを運びます。 'System.Graphics.Drawing'はGDIの観点から実装されているGDI +をラップするので、画面全体を表すオブジェクトを取得すると仮定しますが、これは特に記述されていません。 – IInspectable