c#位图还记得它来自哪里吗?
本文关键字:位图 还记得 | 更新日期: 2023-09-27 18:17:07
这个问题是System.Drawing.Bitmap特有的。
考虑这种情况:我创建了一个像这样的位图
public Bitmap GetImage(string sourceImage)
{
//sourceImage contains something like "C:''Users''my.name''path''to''image.jpg"
//error/valid filename checking omitted in this example
Bitmap img = new Bitmap(sourceImage);
return img;
}
现在我的代码用那个Bitmap
做事情。稍后,代码中一个不相关的部分决定处理该图像,不再需要保留Bitmap
对象。然而,它有可能再次被需要,所以它想要记住sourceImage
是什么,这样如果它再次需要它,它就知道如何重新创建它。这主要是由于内存;存储路径字符串比存储(可能)大图像占用的空间更少。
Bitmap
是否记得它来自哪里,或者它必须随身携带这些信息?
我考虑只是将sourceImage
分配给Tag
属性,但是我使用Tag
用于其他事情,我宁愿不要使它过于复杂。我希望源信息仍然可以访问,以节省我的麻烦。
我建议创建一个容器类来提供额外的功能
class BitmapContainer : IDisposable
{
Bitmap Value {get; private set;}
string OriginalLocation {get; private set;}
public BitmapContainer(string sourceImage)
{
Value = new Bitmap(sourceImage);
OriginalLocation = sourceImage;
//you get the picture
}
//Don't forget to implement a dispose pattern because Bitmap uses native resources
}
你甚至可以使位图获取器智能化,如果当前没有加载,就加载位图,并有另一种方法来卸载(Dispose并设置为null),直到再次需要