我有一个Windows窗体,其中将BackgroundImage属性设置为自定义位图图像。

私人图片MakeCustomBackground()
{
    位图结果=新位图(100,100);

    使用(图形画布= Graphics.FromImage(结果))
    {
        //绘制自定义图片
    }

    返回结果;
}

私人无效UpdateFromBackground()
{
    this.BackgroundImage = MakeCustomBackground();
}


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

最佳答案

假定UpdateFromBackground()被多次调用,您可能应该在设置新映像之前(之前)处置旧映像。如果您不这样做,则GC最终会这样做,但是效率较低。表单只会处理您分配的最后一个BgImage。

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

关于c# - 我负责布置背景图像吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1591455/

10-10 08:52