|
分類:[C#]
以下のコードは一応意図したとおり動くのですが、気になるのはファイルを読み込むたびに Bitmap のインスタンスが生成される(つまり複数生成されるのではないか?)のでちょっと不安ですし、これでなぜまともに動くのが不思議です。 特に問題はないのでしょうか?
@を Bitmap bmp = new Bitmap(); //これはエラーになる としてインスタンスを 1 回だけ生成し、後はそれを使い回してAでは bmp を使って dialog.FileName を読み込む のようにできるものならばすっきりするのですが、そういったことはできそうにもありません。 public partial class Form1 : Form { Bitmap bmp; //@各イベントハンドラで共有して使うためここで宣言
private void BtnFileOpen_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); if (dialog.ShowDialog() == DialogResult.OK) { try { bmp = new Bitmap(dialog.FileName); //Aインスタンス生成 PictureBox1.Image = bmp; } catch { MessageBox.Show("これは画像ファイルではありません", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } }
private void Rotation_Click(object sender, EventArgs e) { if (Pb.Image != null) { bmp = (Bitmap)Pb.Image; bmp.RotateFlip(RotateFlipType.Rotate90FlipNone); // 90°回転 PictureBox1.Image = bmp; } }
private void BtnInversion_Click(object sender, EventArgs e) { if (Pb.Image != null) { bmp = (Bitmap)Pb.Image; bmp.RotateFlip(RotateFlipType.RotateNoneFlipX); // 水平反転 PictureBox1.Image = bmp; } }
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { bmp.Dispose(); //解放 } }
|