将图像复制到剪贴板并将其粘贴为文件(vb.net)

时间:2010-01-11 12:16:28

标签: vb.net image file clipboard pasting

我有一个图片框,如果我在下面使用snipet:

Clipboard.SetImage(PictureBox.image)

然后我只能将图像粘贴到Paint和MS word之类的东西上。我无法将其作为文件粘贴到文件夹/桌面中。

那么如何将图像复制到剪贴板中,如果粘贴到文件夹,那么它就会变成文件?

2 个答案:

答案 0 :(得分:5)

如果您使用的是.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将被粘贴。

答案 1 :(得分:3)

这基本上是@Vivek发布但移植到VB的内容。如果这对您有用,请向上投票。您必须了解的是,资源管理器只允许您粘贴文件,而不是对象(无论如何都是AFAIK)。原因是因为如果将图像数据复制到剪贴板,它应该粘贴哪种格式? 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)