画像ボックスがあり、以下のスニペットを使用すると:
Clipboard.SetImage(PictureBox.image)
次に、画像をペイントやMSワードなどにのみ貼り付けることができます. ファイルとしてフォルダ/デスクトップに貼り付けられません。
では、どうすれば画像をクリップボードにコピーでき、フォルダに貼り付けられるとファイルになりますか?
.net を使用していて、最終的な目標がファイルを保存することである場合、もっと簡単な方法があります。
ここで C# のコードを VB.net に移植するのは難しくありません。私はそれを行うのが面倒です :) とにかく、貼り付ける前にどこかに保存する必要があります...
ファイルをピクチャボックスにロードし、再びファイルに保存し(ラメ、私は知っています)、クリップボードデータをコピー操作として設定します
それを貼り付ける (Ctrl+V) と、貼り付けられます。
C#
__
ビットマップ bmp;
string fileName=@"C:\image.bmp";
//ここでは、ファイルからロードすると仮定します。別の場所から画像を取得する可能性があり、コードが異なる場合があります
pictureBox1.Image=(Image) Bitmap.FromFile(fileName);
bmp=(Bitmap)pictureBox1.Image;
bmp.Save(@"c:\image2.bmp");
System.Collections.Specialized.StringCollection st = new
System.Collections.Specialized.StringCollection();
st.Add(@"c:\image2.bmp");
System.Windows.Forms.Clipboard.SetFileDropList(st);
</pre>
viola は、image2.bmp が貼り付けられるファイルをフォルダーに貼り付けようとします。
これは基本的に@Vivekが投稿したものですが、VBに移植されたものです。これがうまくいく場合は、彼に賛成票を投じてください。理解しておく必要があるのは、エクスプローラーではオブジェクトではなくファイルのみを貼り付けることを許可することです (とにかく)。その理由は、画像データをクリップボードにコピーする場合、どの形式で貼り付ける必要があるかです。PNG、BMP、JPG? 圧縮設定は?@Vivekが言ったように、それらを考えて、システムのどこかに自分でファイルを作成し、SetFileDropList
それを使用して一時ファイルをクリップボードに追加する必要があります。
' Add it as an image
Clipboard.SetImage(PictureBox1.Image)
'Create a JPG on disk and add the location to the clipboard
Dim TempName As String = "TempName.jpg"
Dim TempPath As String = System.IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, TempName)
Using FS As New System.IO.FileStream(TempPath, IO.FileMode.Create, IO.FileAccess.Write, IO.FileShare.Read)
PictureBox1.Image.Save(FS, System.Drawing.Imaging.ImageFormat.Jpeg)
End Using
Dim Paths As New System.Collections.Specialized.StringCollection()
Paths.Add(TempPath)
Clipboard.SetFileDropList(Paths)