クリップボードとそれがファイルとして貼り付けることができるように画像をコピー(vb.net)
質問
私は、ピクチャボックスを持っている、と私はsnipet以下使用する場合:
Clipboard.SetImage(PictureBox.image)
それから私は、唯一のペイントとMSワードのようなものに画像を貼り付けることができます。私は、フォルダ/デスクトップにファイルとしてそれを貼り付けることはできません。
だから私はクリップボードに画像をコピーしたフォルダに貼り付けますならば、それがファイルになっできるか?
解決
<ストライキ>は、.NETを使用していて、あなたの究極の目標は、ファイルを保存する場合は、非常に簡単な方法があります、ストライキ>
ここでのC#のコードは、VB.netにそれを移植することは難しいことではありません、私はそれを行うにはあまりにも怠惰なよ:) とにかく、あなたはそれを貼り付けることができます前に、どこかでそれを保存しなければならないの...
これは、ピクチャボックスにファイルをロードし、再びそれをファイルに保存し、(ラメ、私が知っています) そしてコピー操作として、クリップボードのデータを設定する
そして、あなたは(Ctrlキー+ V)を貼り付けるときに、それを貼り付けます。
C#
__
Bitmap bmp;
string fileName=@"C:\image.bmp";
//here I assume you load it from a file, you might get the image from somewhere else, your code may differ
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>
とヴィオラは、ファイル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)