フォームに画像ファイルをドラッグアンドドロップするとフォーム上に画像が表示されます。
// picview.cs
using System;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.Threading.Tasks;
/*
ビルド
mcs picview.cs /r:System.Windows.Forms.dll /r:System.Drawing.dll
実行
mono picview.exe
*/
class Form1 : Form
{
// パネル
Panel panel1 = new Panel()
{
Dock = DockStyle.Fill, // クライアント領域全体に敷き詰める
AllowDrop = true, // ドラグアンドドロップを受け入れる
AutoScroll = true, // 自動スクロール
BackColor = Color.Gray,
};
// ピクチャボックス
PictureBox picbox1 = new PictureBox()
{
SizeMode = PictureBoxSizeMode.AutoSize, // 画像サイズに合わせてサイズ変更
};
// コンストラクタ
public Form1()
{
picbox1.Parent = panel1;
panel1.Parent = this;
Size = new Size(800, 600);
// ドラッグエンター
panel1.DragEnter += (s, e) =>
{
e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Copy : DragDropEffects.None;
};
// ドラッグドロップ
panel1.DragDrop += async (s, e) =>
{
string path = ((string[])e.Data.GetData(DataFormats.FileDrop, false))[0];
// ピクチャボックスに表示されているイメージオブジェクトを破棄
if (picbox1.Image != null)
{
picbox1.Image.Dispose();
picbox1.Image = null;
}
// ピクチャボックスへ画像ファイルからイメージオブジェクトをセット
using (FileStream fs = File.OpenRead(path))
{
picbox1.Image = await Task.Run(() => { return Image.FromStream(fs); });
}
};
}
// エントリーポイント
public static void Main()
{
Application.Run(new Form1());
}
}//class
コメント