|
分類:[C#]
前回の質問と関連する質問です。Pb はデザイナーで貼り付けたPictureBox です。 60≦Width≦100、60≦Height≦100 を満たす小さな画像を読み込み、PictureBox.BackgroundImage を利用して PictureBox にその画像を連結して敷き詰めるコードです。いいと思ったのですが2回目にファイルを読み込むとき 「アプリケーションのコンポーネントでハンドルされていない例外が発生しました」 という実行エラーが出ます。何が原因でしょうか?
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); if (Pb.Image != null) { Pb.Image.Dispose(); } Pb.Image = bmp; } catch { MessageBox.Show("これは画像ファイルではありません", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } }
//画像を敷き詰める private void BtnTile_Click(object sender, EventArgs e) { if (bmp != null) { if (bmp.Width < 60 || bmp.Width > 100) { return; } if (bmp.Height < 60 || bmp.Height > 100) { return; } Pb.Width = bmp.Width*10; Pb.Height = bmp.Height*8; Pb.BackgroundImage = bmp; Pb.BackgroundImageLayout = ImageLayout.Tile; Pb.Invalidate(); } } }
|