我需要使用字体、画笔等图案吗

发布于 2024-10-09 14:27:22 字数 71 浏览 3 评论 0 原文

当使用 GDI+ 编程时,我是否需要坚持对画笔、字体等各种对象使用模式,这会让代码变得非常混乱。

有什么建议吗?

When programming with GDI+, do I need to stick to using pattern to all kinds of objects like Brush, Font, it can make code very cluttered.

Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

悟红尘 2024-10-16 14:27:22

是的,您应该对您创建的所有 (IDisposable) 对象执行此操作。

例外情况是库存对象(Brushes.Blue、Pens.Black、e.Graphics...),因为您不创建它们。

它会使代码变得非常混乱。

using 并不像完整的 try/finally 那样混乱。请注意,您可以节省嵌套:

using (Pen p = ...)
using (Brush b = ...)
{
   // draw with p and b
}

但是,如果要在混乱的代码和程序失败的可能性之间进行选择,那么真的有选择吗?

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.

it can make code very cluttered.

using is not as cluttered as a full try/finally. Note that you can economize the nesting:

using (Pen p = ...)
using (Brush b = ...)
{
   // draw with p and b
}

But if the choice is between cluttered code or the possibility of the program failing, is there really a choice?

甚是思念 2024-10-16 14:27:22

是的,您应该。这些对象可能包含需要正确处理的非托管资源(例如,GDI+ 句柄)。因此,要么使用 using 块,要么将所有内容包装在 try / finally 语句中,在 finally 块中调用 IDisposable。处理

请参阅之前有关此主题的答案:

如果我不这样做会发生什么不调用Dispose

包装using 中的 >MemoryStream

Yes, 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 a try / finally statement where in the finally block you invoke IDisposable.Dipose.

Please see these previous answers on this topic:

What Happens if I Don't Call Dispose

Wrapping MemoryStream in a using

时光沙漏 2024-10-16 14:27:22

如果您使用 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.

天荒地未老 2024-10-16 14:27:22

是的,你必须这样做。

另一种方法是使用默认画笔和字体,例如 Brushes.Black,...

Yes, you have to.

Alternative is using default brushes and fonts such as Brushes.Black, ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文