ピクチャボックスに表示されている画像をドラッグ&ドロップするピクチャボックスに表示されている画像をワードパッドやWordなどのアプリケーションにドラッグ&ドロップしてデータを渡す方法を紹介します。 ドラッグ&ドロップの操作を開始するには、コントロールのDoDragDropメソッドを使いますが、ワードパッドやWordにドラッグ&ドロップでデータを渡す場合は、DoDragDropメソッドのドラッグするデータに画像のImageオブジェクトやBitmapオブジェクトをそのまま指定するだけで大丈夫のようです。なお、ドラッグ&ドロップの基本的な方法については、「ドラッグ&ドロップを行う」をご覧ください。 例えば、ピクチャボックス"PictureBox1"のImageプロパティに設定されている画像をドラッグするためのコードは、次のようになります。(ここではPictureBox1のMouseDownイベントハンドラPictureBox1_MouseDownでドラッグを開始しています。) [VB.NET] Private Sub PictureBox1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles PictureBox1.MouseDown 'ドラッグを開始する PictureBox1.DoDragDrop(PictureBox1.Image, DragDropEffects.All) End Sub [C#] private void PictureBox1_MouseDown( object sender, System.Windows.Forms.MouseEventArgs e) { //ドラッグを開始する PictureBox1.DoDragDrop(PictureBox1.Image, DragDropEffects.All); } 注意:上記の方法でピクチャボックスに表示された画像をドラッグ&ドロップできないという方は、こちらをご覧ください。 ドロップで画像のイメージとファイルのデータを渡すさらに、画像をアプリケーションにドロップしたときに、画像のイメージに加えさらに画像ファイルのデータを渡すための方法がニュースグループに投稿されています。 この方法によると、まずピクチャボックスに表示されている画像がファイルに保存されていない時はこれをファイルに保存してから、DataObjectオブジェクトのSetDataにより画像ファイルのパスとイメージを格納し、DoDragDropメソッドによりドラッグを行うというものです。 次にこの方法を使った例を示します。前と同様にピクチャボックス"PictureBox1"のImageプロパティに設定されている画像をドラッグするものとし、この画像はすでに"C:\temp.bmp"というファイルに保存されているものとします。画像が保存されていない場合は、あらかじめSaveメソッドにより保存するようにしてください。 [VB.NET] Private Sub PictureBox1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) _ Handles PictureBox1.MouseDown '画像ファイル名の入ったstring型配列を作る Dim fileNames As String() = {"c:\temp.bmp"} 'ファイルドロップ形式でDataObjectオブジェクトを作成する Dim dataObj As New DataObject(DataFormats.FileDrop, fileNames) 'さらにビットマップ形式でも格納する dataObj.SetData(DataFormats.Bitmap, Image.FromFile(fileNames(0))) 'ドラッグを開始する PictureBox1.DoDragDrop(dataObj, DragDropEffects.All) End Sub [C#] private void PictureBox1_MouseDown( object sender, System.Windows.Forms.MouseEventArgs e) { //画像ファイル名の入ったstring型配列を作る string[] fileNames = {"c:\\temp.bmp"}; //ファイルドロップ形式でDataObjectオブジェクトを作成する DataObject dataObj = new DataObject(DataFormats.FileDrop, fileNames); //さらにビットマップ形式でも格納する dataObj.SetData( DataFormats.Bitmap, Image.FromFile(fileNames[0])); //ドラッグを開始する PictureBox1.DoDragDrop(dataObj,DragDropEffects.All); } この方法でドラッグ&ドロップした場合、ドロップ先がエクスプローラである場合はもちろん、ワードパッドなど多くのアプリケーションへのドロップでも単にファイルのドロップとして扱われてしまうようです。 (この記事は、「.NETプログラミング研究 第37号」で紹介したものです。) 注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。
|
|
Copyright 2002-2008 DOBON!. All rights reserved.
|