2009/02/20

[C#]Bitmapに読み込んだ画像に上書きできない

このエントリーをはてなブックマークに追加
知らないとはまるかも知れないので。

Bitmapに読み込んだ画像に上書きできない

Bitmap bmp1 = new Bitmap(filename);
読み込んだ画像はbmp1が解放されるまで、ファイルの内容が変更されないように噛んでしまうわけです。
何かと不自由です。

同じサイズのBitmapに内容をコピーしておいて、早々に解放しておくというやりかたがあります。

ソースコード
Bitmap temp = new Bitmap(filename); // 一回読み込んで
Bitmap bmp = new Bitmap(temp.Width, temp.Height); // おんなじサイズのBitmapを作って

Graphics g = Graphics.FromImage(bmp);
g.DrawImage(temp,0,0,bmp.Width,bmp.Height); // 絵だけコピー
g.Dispose();
temp.Dispose(); // 後処理

少し面倒なようだけど、手放しておいたほうがいいです。
Clone()で複製しても当然のように駄目なのでご注意。

それから、もともとの画像の解像度が72じゃないと大きさに違いが出てくるのでDrawImageなんかのサイズ指定するときも注意。

0 件のコメント :

コメントを投稿