![]() |
1
2
是的,我想你会得到很多。 首先,你的内存限制会更好。如果您一直在创建位图,是什么阻止您的客户端代码保留它们并耗尽内存?
编辑 您还可以考虑维护自己的位图池,而不需要调用者传入现有的位图池。确保您记录了位图是您自己的,并且调用者应该将它们视为只读的(您能将其包装在某个不可变的对象中吗?)。这样,您就可以在自己的时间创建/处理,而不需要客户提供任何东西。 |
![]() |
2
2
是的,在绘制时运行的代码中重新创建位图通常成本太高,并且绘制速度太慢。保留位图的副本可以解决速度问题,代价是需要更多内存。 请注意,标准Control.BackgroundImage属性对此可用,请考虑使用它。您只需要添加代码,当需要不同背景图像的条件更改时,更新该属性(并调用Invalidate)。绘图是自动的。 次要的效率考虑是预先缩放位图以精确地适应控件的ClientSize,避免在绘制时重新缩放位图。节省了很多钱,尤其是位图很大的时候。但需要重写OnResize方法,以便重新生成缩放的位图。如果在调整窗体大小时绘制速度过慢,则需要连接窗体的ResizeEnd事件。 而创建格式为32bpppargb像素格式的位图,它在大多数视频适配器上的绘制速度大约是其他格式的10倍。 |
![]() |
lehermj · 在java中创建类实例的问题 7 年前 |
![]() |
Thufir · 用ruby实例化Foo?[副本] 7 年前 |
|
user1094081 · 基于函数参数创建类实例[重复] 7 年前 |