首页 文章

我负责处理BackgroundImage吗?

提问于
浏览
1

我有一个窗体,我将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();
}

我的问题是,Image是一次性的,我正在创造它,这是否意味着我必须处理它?或者当我通过BackgroundImage将图像传递给表单时,是否需要所有权并在不再需要时将其处理掉?

1 回答

  • 5

    假设 UpdateFromBackground() 被多次调用,您可能应该在设置新图像时(之前)处理旧图像 . 如果你不这样做,那么GC最终会做到,但效率会降低 . 表格将仅处理您指定的最后一个BgImage .

    private void UpdateFromBackground()
    {
        if (this.BackgroundImage != null)
        {
           this.BackgroundImage.Dispose();
        }
        this.BackgroundImage = MakeCustomBackground();
    }
    

相关问题