复制图像到剪贴板并将其作为文件粘贴(VB.Net)

3

我有一个图片框,如果我使用下面的代码片段:

Clipboard.SetImage(PictureBox.image)

那么我只能把这个图片复制到像画图和微软Word这样的软件中,而不能把它作为一个文件粘贴到文件夹或桌面上。

那么如何将图片复制到剪贴板中,并使其可以粘贴到文件夹中变成一个文件呢?

2个回答

5
如果您正在使用.net并且最终目标是保存文件,有一种更加简单的方法,
以下是C#代码,将其移植到VB.net不难,我只是太懒了:) 无论如何,在粘贴之前必须将其保存在某个位置...
它将文件加载到PictureBox中,然后再将其保存到文件中(很糟糕)并将剪贴板数据设置为复制操作
然后当您粘贴时(Ctrl+V),它会被粘贴。
C# __ Bitmap 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);
然后,当您尝试在文件夹中粘贴时,文件image2.bmp将被粘贴。

我知道如何保存它们,但我想将图像复制为文件。 - Jonathan.
现在无法在MSPaint中粘贴图像。如何解决以便在MSPaint MS Word中使用? - Nasenbaer

4
这里基本上是@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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接