0
Я пытался непосредственно рисовать на экран с помощью следующего кода:OutOfMemory исключения при использовании Graphics.FromHwnd (...)
[DllImport("user32.dll")]
public static extern IntPtr GetDC(IntPtr ptr);
static void draw(Rectangle r, Brush b, IntPtr hwnd)
{
using (Graphics g = Graphics.FromHwnd(hwnd))
{
g.FillRectangle(b, r);
}
}
static void Main(string[] args)
{
draw(new Rectangle(0, 0, 400, 400), Brushes.PaleGoldenrod, GetDC(IntPtr.Zero));
}
Consulting документации и различных примеры этого должно быть правильным кодом. Тем не менее я получаю OutOfMemoryException в следующей строке:
using(Graphics g = Graphics.FromHwnd(hwnd))
Поскольку я запрашивая только одной ручкой, я не понимаю, как возникает это исключение. В этом примере нет другого кода.
Что это значит, что 'hwnd' предположим, что нужно указать? – Tigran
Это возвращается из GetDC, который, согласно его документации, ведет себя следующим образом: hwnd: дескриптор окна, чей DC должен быть восстановлен. Если это значение равно NULL, GetDC получает DC для всего экрана. –
спасибо, что решил! –