Если у вас есть дескриптор окна (HWND
) вашего окна WPF, предположительно полученный с использованием класса WindowInteropHelper
, то вы можете легко получить дескриптор контекста устройства (HDC
) для этого окна.
Есть два способа достичь этого, хотя оба в конечном итоге делают одно и то же.Во-первых, это P / Invoke необходимых функций API GDI +, но мы можем исключить это довольно быстро, поскольку это излишне отнимает много времени.Помните, что .NET Framework уже включает все эти вещи для разработки WinForms в пространство имен System.Drawing
и, в частности, Graphics
класс .Поэтому все, что вам нужно сделать, это добавить ссылку на System.Drawing
в ваше приложение WPF, и вы получите все эти функциональные возможности бесплатно.
Интересующая вас часть - это Graphics.FromHwnd
метод , который создает новый объект Graphics
из указанного дескриптора окна (HWND
).
Получив это, вы можете получить дескриптор контекста устройства (HDC
) вызывая метод Graphics.GetHdc
, который возвращает именно то, что вы ищете - IntPtr
значение, представляющее дескриптор контекста устройства.
Помните, что выВам нужно будет вызвать метод Dispose
для вашего Graphics
объекта после того, как вы закончите с ним, чтобы высвободить связанные с ним ресурсы.