1
2
是的,我想你会得到很多。 首先,你的内存限制会更好。如果您一直在创建位图,是什么阻止您的客户端代码保留它们并耗尽内存?
编辑 您还可以考虑维护自己的位图池,而不需要调用者传入现有的位图池。确保您记录了位图是您自己的,并且调用者应该将它们视为只读的(您能将其包装在某个不可变的对象中吗?)。这样,您就可以在自己的时间创建/处理,而不需要客户提供任何东西。 |
2
2
是的,在绘制时运行的代码中重新创建位图通常成本太高,并且绘制速度太慢。保留位图的副本可以解决速度问题,代价是需要更多内存。 请注意,标准Control.BackgroundImage属性对此可用,请考虑使用它。您只需要添加代码,当需要不同背景图像的条件更改时,更新该属性(并调用Invalidate)。绘图是自动的。 次要的效率考虑是预先缩放位图以精确地适应控件的ClientSize,避免在绘制时重新缩放位图。节省了很多钱,尤其是位图很大的时候。但需要重写OnResize方法,以便重新生成缩放的位图。如果在调整窗体大小时绘制速度过慢,则需要连接窗体的ResizeEnd事件。 而创建格式为32bpppargb像素格式的位图,它在大多数视频适配器上的绘制速度大约是其他格式的10倍。 |
McRui · Laravel storeAs()存储问题中的图像 1 年前 |
HTML · 如何使用css使任何SVG图像灰度化? 2 年前 |
GabyUnalaq · 从原始RGB深度图像到灰度的转换不正确 2 年前 |
MHSarmadi · 阻止显示未完全加载的图像 2 年前 |
softandwet · 反应img onError未点火 2 年前 |
Nilesh soni · 颤振图像已缩放,但如何更改缩放位置 2 年前 |