使用 Graphics.FromHwnd(...) 时出现 OutOfMemory 异常
OutOfMemory exception when using 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));
}
查阅文档和各种示例,这应该是有效代码。尽管如此,我在以下行得到了 OutOfMemoryException:
using(Graphics g = Graphics.FromHwnd(hwnd))
因为我只查询一个句柄,所以我不明白这个异常是如何产生的。此示例中没有其他代码。
DC 不是 HWND。将 Graphics.FromHwnd()
替换为 Graphics.FromHDC()
我尝试使用以下代码直接绘制到屏幕上:
[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));
}
查阅文档和各种示例,这应该是有效代码。尽管如此,我在以下行得到了 OutOfMemoryException:
using(Graphics g = Graphics.FromHwnd(hwnd))
因为我只查询一个句柄,所以我不明白这个异常是如何产生的。此示例中没有其他代码。
DC 不是 HWND。将 Graphics.FromHwnd()
替换为 Graphics.FromHDC()