Winforms Drawing-参数在系统简历中无效

本文关键字:无效 系统 Drawing- 参数 Winforms | 更新日期: 2023-09-27 18:01:01

当我的应用程序正在运行并且系统从休眠状态(在Windows 7中(恢复时,我遇到了一个奇怪的问题。

我正在调用Graphics.DrawString方法,这在大多数情况下都很好。除非程序正在运行并且我使系统处于休眠状态。然后,当我继续时,DrawString方法抛出一个ArgumentException(参数无效(,并在我的绘图应该在的地方给我一个红十字。

这里出了什么问题?捕获异常可以避免红十字,但当我们进入这种状态时,就没有回头路了,异常将一直被抛出,直到程序重新启动。

谢谢你的帮助,Alan

编辑:这是失败的代码:

protected override void OnPaint(PaintEventArgs e)
{
    // Drawing logic succeeds until this point
    e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF(x, y));
}

这实际上是ToolStripLabel的一个子类。

Winforms Drawing-参数在系统简历中无效

许多系统资源在休眠或休眠后变得无效。因此,您的字体可能无效,因为这是此类问题的常见原因。此外,我注意到您没有在SolidBrush上调用Dispose,您应该这样做以防止资源泄漏。像这样。。。

using(SolidBrush drawBrush = new SolidBrush(ForeColor))
    e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y));