使用Graphics.FromHwnd(...)时的OutOfMemory异常

时间:2015-03-10 13:22:06

标签: c# system.drawing

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

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

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

1 个答案:

答案 0 :(得分:4)

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