2016-05-06 17 views
1

Мне нужно получить точное значение IntPtr.Zero в функции ниже. Я использовал эту функцию для преобразования значения пикселя позиции текста текста документа в текстовое значение WPF.Что означает IntPtr.Zero в System.Drawing.Graphics

Graphics g = Graphics.FromHwnd(IntPtr.Zero) 

Обычно говорится, что он передал ручку, но я ее не понял.

ответ

2

Graphics.FromHwnd метод используется для создания объекта Graphics из указанного обработчика окна.

Когда вы передаете IntPtr.Zero в качестве параметра, вы создаете Graphics с рабочего стола Windows, который позволяет рисовать непосредственно на экране.

1

IntPtr - это специфичный для платформы способ представления дескриптора или указателя. В 32-битных системах указатель имеет ширину 32 бит, а в 64-битной системе - 64 бита. Этот тип существует, чтобы скрыть эти различия от вас.

IntPtr.Zero представляет собой дескриптор или указатель, значения которого равны 0 (по существу, null). Вы можете использовать его в тех местах, где API ожидает дескриптор стиля Windows API, например, в вызове FromHwnd в вашем примере. В Windows API HWND является дескриптором окна, где null указывает «нет окна». Чтобы передать это через C#, вы используете IntPtr.Zero.

+0

* «В API Windows HWND является дескриптором окна, где null указывает« нет окна ».» * - В Windows API такого соглашения нет. Всякий раз, когда аргумент «HWND» является необязательным, он несет определенную семантику. Поскольку 'System.Graphics.Drawing' обертывает GDI +, который реализован в терминах GDI, я бы предположил, что он извлекает объект, представляющий весь экран, хотя это специально не задокументировано. – IInspectable