创建gdi笔刷和笔有多贵?我应该在需要的基础上创建它们并将它们包装在一个使用中,以便它们快速处理,或者我应该创建一个类似于System.Drawing.Brushes类的静态类?
答案 0 :(得分:5)
IMO,它们足够高效,你通常不应该创建在多个方法调用中使用的长期实例,但效率低,你应该在特定方法中只创建一个,而不是创建一个新方法每次你需要画一些东西。
换句话说,不要在您的课程中存储用于在每次OnPaint
调用中绘制文本的自定义画笔,也不要为您在其中绘制的每一行文本创建新画笔OnPaint调用,或者。
答案 1 :(得分:2)
我尝试使用静态画笔在加载的Web应用程序中自定义绘制图像时遇到异常。
我不知道技术原因,但我认为Brushes和Pens不是线程安全的,所以我会以线程安全的方式根据需要创建它们并将它们放在该范围内,可能是用使用
答案 2 :(得分:1)
对于我们的可配置GUI,我们认为在绘制控件时我们会尝试将它们放入“使用”(在需要时重新创建),并且如果需要我们会进行优化。
没有要求。
这是WinCE上的WinForm,这通常意味着它擅长于在桌面上显示可能稍微有点慢的东西(例如,在WinCE上反射感觉要贵得多),所以除非你在桌面上做一些疯狂的图像操作,需要更多那么我认为你应该在需要的时候创建它们。
IIRC使用画笔。 GDI中的集合可能是一个选项,因为这可以确保它们在最后被缓存和处理,尽管我不确定那里的线程安全。