此问题特定于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;
}
Run Code Online (Sandbox Code Playgroud)
现在我的代码去做并做了一些事情Bitmap.稍后,代码的不相关部分决定使用该图像完成,并且不再需要保留该Bitmap对象.但是,有可能再次需要它,所以它想要记住是什么sourceImage,如果它确实需要它,它知道如何重新创建它.这主要是由于记忆; 存储路径串比存储(可能)大图像占用更少的空间.
是Bitmap记得它来自哪里,还是必须随身携带这些信息?
我考虑过只分配sourceImage给该Tag属性,但是我正在使用Tag其他东西,我宁愿不要过度复杂化它.我希望源信息仍然可以访问,以免给我带来麻烦.
小智 5
我建议创建一个容器类来提供额外的功能
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
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以使位图getter智能化并加载Bitmap(如果当前未加载),并使用另一种方法卸载(Dispose并设置为null),直到再次需要
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |