2009-01-07 99 views
7

创建gdi笔刷和笔有多昂贵?我应该在需要添加的基础上创建它们并将它们包装在一个使用中,以便快速处理它们,还是应该创建一个类似于System.Drawing.Brushes类的静态类?使用笔刷和笔的指导原则

回答

5

IMO,它们也非常有效,你应该平时不创建用于在几个方法调用长寿命的情况下,却足以效率低下,你应该一个特定的方法中创建每个只有一次,而不是创建一个新的每次你需要绘制一个东西。

换句话说,不要在您的课堂中存储用于在每个OnPaint调用上绘制文本的自定义画笔,也不要为您在该OnPaint调用中绘制的每一行文本创建新画笔,要么。

2

试图自定义绘制在Web应用程序的图像负载下具有静态刷的时候我遇到例外。

我不知道技术上的原因,但我认为画笔和笔不是线程安全的,所以我会按照线程安全的方式创建它们,并在该范围内处理它们,可能会使用

1

对于我们配置的GUI,我们想出我们会尽量只把它们放在“使用”绘制我们的控制时(重新创建在需要时),并推断如果需要的话,我们会优化。

它没有被要求。

这是WinCE上的WinForm,它通常意味着它很擅长显示桌面上可能会稍微慢一些的东西(例如,WinCE上的反射感觉更加昂贵),所以除非您在桌面上执行一些疯狂的图像操作, mucho perf然后我认为你应该很好地创建它们,并在需要时。用画笔

IIRC。 GDI中的集合可能是一个选项,因为这可以确保它们在最终被缓存和处理,尽管我不确定那里的线程安全性。