我最近了解到需要处理GDI对象,因为GC不像C#中的其他对象那样处理它们。我有位图,我希望在表格的生命周期内可用,但我不确定一些事情......
重新创建位图对象时,是否需要先处理原始对象?我想不是,但我以为我会检查。例如:
// Global Bitmap bmp; // In form constructor... bmp = new Bitmap(source); // In a function... if(bmp != null) { bmp.Dispose bmp = null } bmp = new Bitmap(source2); // On paint (if bmp not null)... DrawImage(bmp, rectangle);
因为我想在表单的生命周期中保留位图,我可以在表单关闭事件中简单地处理它们吗?
有没有比保留位图更好的选择?从文件创建每个位图并在paint上处理执行速度太慢。使用Image而不是Bitmap会降低图像质量。
提前致谢!
答案 0 :(得分:4)
如果您暂时使用Bitmap
,则应考虑将其包裹在using
块中,以便自动处理:
using (Bitmap myBitmap = new Bitmap(src))
{
//Do stuff with the temp bitmap
}