使用 Graphics.FromHwnd(..) 时出现内存不足异常

本文关键字:内存不足 异常 Graphics FromHwnd 使用 | 更新日期: 2024-11-08 13:42:03

我尝试使用以下代码直接绘制到屏幕上:

[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));
}

查阅文档和各种示例,这应该是有效的代码。尽管如此,我在以下行得到一个内存不足异常:

using(Graphics g = Graphics.FromHwnd(hwnd))

由于我只查询单个句柄,因此我不明白此异常是如何引发的。此示例中没有其他代码。

使用 Graphics.FromHwnd(..) 时出现内存不足异常

DC 不是 HWND。 将Graphics.FromHwnd()替换为Graphics.FromHDC()