異なる変換マトリックスを持つグラフィックスオブジェクトでプリミティブを描画する必要があります。私は行列やグラフィックは私のためにそれを行います処分する必要があるのだろうか:Graphics.Transformから返された行列を破棄する必要がありますか?
using (var g = Graphics.FromImage(...))
{
... some code ...
var tmp = g.Transform;
g.TranslateTransform(...);
... some code ...
g.Transform = tmp;
// should I call tmp.Dispose() here?
tmp.Dispose();
... some code that use g ....
}
http://msdn.microsoft.com/en-us/library/system.drawing.graphics.transform.aspx
は言う:
行列が返され、transformプロパティによって がのコピーであるため、マトリックスの を不要にしたら処分する必要があります。
私はg.Transform = tmp;
の後にそれを必要としません、私はそれを処分すべきですか?
一般に、IDisposable *を実装するオブジェクトを処分するのは、それがあなたの責任であれば処分することだけです。この場合、私は考えておらず、あなたが正しいと思いますが、一般的にオブジェクトの所有権を認識する必要があります。あなたがどこかからストリームオブジェクトを取得した場合(例えば、Webリクエストや入出力ストリームを考える)、それらを破棄するのはあなたの責任ではないので、そうしないでください。 –
Lasseが指摘しているように、オブジェクト(WSS/SharePointのSPContext.Currentから返されたオブジェクトなど)を破棄しないでください。だから必ずしも良い考えではありません。 –
@Lasse、@トーマス - 両方に感謝、全く同感。私はそれをより明確にするために私の答えを更新しました。 – razlebe