当我的应用程序正在运行并且系统从休眠状态恢复时(在 Windows 7 中),我遇到了一个奇怪的问题。
我正在调用 Graphics.DrawString 方法,大多数情况下都可以正常工作。除非程序正在运行并且我使系统休眠。然后,当我继续时,DrawString 方法抛出一个 ArgumentException(参数无效)并在我应该画的地方给我一个红叉。
这里出了什么问题?捕获异常避免了红叉,但是当我们进入这种状态时就没有办法返回,异常将一直抛出直到程序重新启动。
感谢您的帮助, 艾伦
编辑:这是失败的代码:
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 的子类。
最佳答案
许多系统资源在 sleep 或休眠后变得无效。因此,您的字体可能无效,因为这是此类问题的常见原因。我还注意到您没有在 SolidBrush 上调用 Dispose,您应该这样做以防止资源泄漏。像这样...
using(SolidBrush drawBrush = new SolidBrush(ForeColor))
e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y));
关于c# - Winforms 绘图 - 参数在系统恢复时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6540250/