我有一个Windows窗体,我将BackgroundImage属性设置为自定义位图图像。
private Image MakeCustomBackground() { Bitmap result = new Bitmap(100, 100); using(Graphics canvas = Graphics.FromImage(result)) { // draw the custom image } return result; } private void UpdateFromBackground() { this.BackgroundImage = MakeCustomBackground(); }
我的问题是,图像是一次性的,我正在创造它,这是否意味着我必须处理它?或者当我通过BackgroundImage将图像传递给表单时,是否需要所有权并在不再需要时将其丢弃?
答案 0 :(得分:5)
假设UpdateFromBackground()
被多次调用,您可能应该在(之前)设置新的时间之前处理旧图像。如果你不这样做,那么GC最终会做到,但效率会降低。表格将仅处理您指定的最后一个BgImage。
private void UpdateFromBackground()
{
if (this.BackgroundImage != null)
{
this.BackgroundImage.Dispose();
}
this.BackgroundImage = MakeCustomBackground();
}