我需要使用字体、画笔等图案吗
当使用 GDI+ 编程时,我是否需要坚持对画笔、字体等各种对象使用模式,这会让代码变得非常混乱。
有什么建议吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
当使用 GDI+ 编程时,我是否需要坚持对画笔、字体等各种对象使用模式,这会让代码变得非常混乱。
有什么建议吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
是的,您应该对您创建的所有 (IDisposable) 对象执行此操作。
例外情况是库存对象(Brushes.Blue、Pens.Black、e.Graphics...),因为您不创建它们。
using
并不像完整的 try/finally 那样混乱。请注意,您可以节省嵌套:但是,如果要在混乱的代码和程序失败的可能性之间进行选择,那么真的有选择吗?
Yes, you should do that for all (IDisposable) objects that you create.
The exceptions are the stock objects (Brushes.Blue, Pens.Black, e.Graphics, ...) because you don't create them.
using
is not as cluttered as a full try/finally. Note that you can economize the nesting:But if the choice is between cluttered code or the possibility of the program failing, is there really a choice?
是的,您应该。这些对象可能包含需要正确处理的非托管资源(例如,GDI+ 句柄)。因此,要么使用
using
块,要么将所有内容包装在try / finally
语句中,在finally
块中调用IDisposable。处理
。请参阅之前有关此主题的答案:
如果我不这样做会发生什么不调用
Dispose
包装
using
中的 >MemoryStreamYes, you should. These objects could contain unmanaged resources (e.g., GDI+ handles) that need to be disposed of properly. So, either use a
using
block or wrap everything thing in atry / finally
statement where in thefinally
block you invokeIDisposable.Dipose
.Please see these previous answers on this topic:
What Happens if I Don't Call
Dispose
Wrapping
MemoryStream
in ausing
如果您使用 new 创建画笔,则应将其丢弃。
如果您从画笔系列中获得画笔,请勿丢弃它。请参阅 http://msdn.microsoft.com/ 的备注部分en-us/library/system.drawing.brushes.aspx 了解更多信息。
字体也是如此,如果您用新创建的字体,请将其丢弃。如果您从其他地方获得它,请查看文档,看看是否应该丢弃它。
If you created the brush using new you should dispose of it.
If you got the brush from the Brushes collection, do not dispose of it. See the remarks section of http://msdn.microsoft.com/en-us/library/system.drawing.brushes.aspx for more info.
The same holds true of fonts, if you created it with new, dispose of it. If you got it from something else, look at the documentation to see if you should dispose if it or not.
是的,你必须这样做。
另一种方法是使用默认画笔和字体,例如
Brushes.Black
,...Yes, you have to.
Alternative is using default brushes and fonts such as
Brushes.Black
, ...