C# Clipboard.SetImage不';行不通

C# Clipboard.SetImage不';行不通,c#,wpf,clipboard,C#,Wpf,Clipboard,我正在尝试从URL下载图像并将其设置到剪贴板(WPF)。我可以将图像粘贴到绘图,但不能粘贴到本地目录 以下是我的代码下载和设置到剪贴板: var request = WebRequest.Create(urlImg); // urlImg - url of image var response = request.GetResponse(); var responseStream = response.GetResponseStream(); var bitmap2 = new Bitmap(

我正在尝试从URL下载图像并将其设置到剪贴板(WPF)。我可以将图像粘贴到绘图,但不能粘贴到本地目录

以下是我的代码下载和设置到剪贴板:

var request = WebRequest.Create(urlImg); // urlImg  - url of image
var response = request.GetResponse();
var responseStream = response.GetResponseStream();
var bitmap2 = new Bitmap(responseStream);

var orgimg = LoadBitmap2(bitmap2); // converting to BitmapSource
Clipboard.SetImage(orgimg);

剪切/复制图像并将其粘贴到文件系统时,只有路径在剪贴板数据中

如果要将下载的图像“粘贴”到目录,则需要模拟该行为:

  • 将下载的映像写入临时目录
  • 使用适当的粘贴数据设置剪贴板(请参阅)
  • 确保模式设置为“剪切”,以便图像不会留在临时位置
  • 范例

    其中
    GetImageFromUrl()
    是:

    private System.Drawing.Image GetImageFromUrl(string url)
    {
        HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
    
        using (HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse())
        {
            using (Stream stream = httpWebReponse.GetResponseStream())
            {
                return System.Drawing.Image.FromStream(stream);
            }
        }
    }
    
    注意:您需要为
    图像
    类添加对
    系统.绘图
    的引用。我确信WPF空间中有一个替代方案

    进一步阅读


    您的问题是什么?urlImg的内容是什么?urlImg是一个简单的图像url,问题是我无法将图像粘贴到本地目录,但当我尝试粘贴到绘图时,它已粘贴。感谢您的快速回复,这是一项工作,但我无法通过两次,我的意思是,当我第二次尝试粘贴相同的图像时,它没有粘贴。如果你想粘贴多次,你需要使用“复制”而不是“剪切”。尝试删除
    data.SetData(“首选DropEffect”,DropEffect)和设置“剪切”下降效果的关联代码。重要提示:在用户将下载的图像复制到其他位置后,您仍然应该从tmpFilePath中删除这些图像。我如何在应用程序关闭时保存tmpFilePath并删除这些文件,或者是否有解决方案@凯尔
    
    private System.Drawing.Image GetImageFromUrl(string url)
    {
        HttpWebRequest httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);
    
        using (HttpWebResponse httpWebReponse = (HttpWebResponse)httpWebRequest.GetResponse())
        {
            using (Stream stream = httpWebReponse.GetResponseStream())
            {
                return System.Drawing.Image.FromStream(stream);
            }
        }
    }