この質問はSystem.Drawing.Bitmapに固有です。C#ビットマップはどこから来たのかを覚えていますか?
は、このような状況を考えてみましょう:私はそう
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
オブジェクトを保持する必要はありません。しかし、それが再び必要になる可能性があるので、それは何かを覚えておいてほしいので、それが何かを再作成する方法を知っていることを覚えておいてください。これは主にメモリによるものです。パスウェイ文字列を保存すると、(潜在的に)大きな画像を保存するよりもスペースが少なくなります。
Bitmap
はどこから来たのか、それともその情報を持ち歩かなければなりませんか?
私はちょうど、Tag
プロパティにsourceImage
を割り当てるしかし、私は他のもののためにTag
を使用していると私はむしろそれをovercomplicateないだろうと考えます。私は問題を救うためにソース情報がまだアクセス可能であることを望んでいます。
いいえ - https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Image.cs,b2315d1ff08bc616とannoyinglyクラスは、派生クラスを作成できないように封印されていますImagePathを属性として持つ – pm100
なぜタグを使用しないのですか?あなた自身のクラスを作り、それのインスタンスをそこに置くと、それはまさにあなたが望むもののようなものです。 – DavidG
@DavidGタグを使って他の情報を伝えています。私がそれを修正してより多くの情報を持ち歩くならば、結果として得られるリファクタはかなりの問題になります。私は可能な限り避けることを望んでいます。 – Cody