我有一个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/