Visual BasicでOpenCVを使用しフィルタ処理を行います。フォームに画像ファイルをドラッグ& ドロップできる例を紹介します。
ドラッグ&ドロップ
フォームに画像ファイルをドラッグ& ドロップできる例を紹介します。以降に、動作例を示します。
実行例
ドラッグ
ドロップ
Form1.vb
読み込んだ画像を表示するフォームに対するコードが記述されているForm1.vb の、変更点を中心に示します。
: Public Class Form1 : Public Sub New() MyBase.New InitializeComponent() : AllowDrop = True AddHandler DragEnter, AddressOf Form1_DragEnter AddHandler DragDrop, AddressOf Form1_DragDrop mForm2 = New Form2 End Sub : 'ドラッグエンター Private Sub Form1_DragEnter(sender As Object, e As DragEventArgs) If e.Data.GetDataPresent(DataFormats.FileDrop) Then e.Effect = DragDropEffects.All Else e.Effect = DragDropEffects.None End If End Sub 'ドロップ Private Sub Form1_DragDrop(sender As Object, e As DragEventArgs) Try Dim fname = CType(e.Data.GetData(DataFormats.FileDrop, False), String()) OpenFile(fname(0)) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub :
画像ファイルのドラッグ&ドロップにも対応するため、それに対応するコードを追加します。まず、フォームにファイルなどのドロップを許可するため、AllowDrop プロパティをTrue に設定します。次に、フォームのDragEnter とDragDrop イベントに対応するメソッドを登録します。最後に、結果表示用のフォームForm2 オブジェクトmForm2 を生成します。
Form1_DragEnter メソッドは、何かをフォーム上にドラッグしたときに制御が渡ります。ドラッグされたものがファイルであれば受け取るようにマウス形状を変更します。
Form1_DragDrop メソッドは、フォームに何かをドロップしたときに制御が渡ります。複数の項目がドロップされても先頭の項目のみを使用し、OpenFile メソッドを呼び出して画像ファイルを読み込みます。画像以外のファイルをドロップするとエラーダイアログが現れます。