将图像从Firefox拖到我的应用程序

时间:2012-06-24 11:15:04

标签: .net wpf firefox drag-and-drop

我可以将图像从Firefox拖放到Windows资源管理器中,然后保存图像。我可以在我自己的应用程序中以某种方式执行相同的操作,即将图像从Firefox拖到我的应用程序的某个部分,然后将图像放入应用程序中吗?

我的应用程序是使用.NET 4和WPF构建的。

编辑: John Koerner让我参与其中,但不完全是我想要的......

如果我将文件从Firefox拖到Windows资源管理器中,该文件的保存方式与我拖动它的网站完全相同。也就是说,它具有相同的文件名,文件格式和文件大小。它似乎就像直接从网站上保存一样,好像我右键单击它并选择“另存为”。我得到的唯一一个是临时文件夹中位图的路径。很好,但不是我想要的。我想我可以把那个位图压缩成JPEG或其他什么,但我真的更喜欢得到原始的。由于这种行为是我将图像拖到Windows资源管理器时所得到的,我想也许我可以在我自己的应用程序中得到它。

1 个答案:

答案 0 :(得分:2)

您必须允许放下窗口,然后处理放置事件。然后,您可以阅读FileDrop以获取磁盘上文件的位置,并将其加载到图像中或您需要的任何其他位置。

public MainWindow()
{
    InitializeComponent();
    this.AllowDrop = true;
    this.Drop += new DragEventHandler(MainWindow_Drop);
}

void MainWindow_Drop(object sender, DragEventArgs e)
{
    BitmapImage bi = new BitmapImage(new Uri(((string[])e.Data.GetData("FileDrop"))[0]));
    image1.Source = bi;

    // Get the different parameters available and see which work for you.
    foreach (var param in e.Data.GetFormats())
        Console.WriteLine(param);
}

这是我从firefox拖到我的应用程序时获得的params列表。您可能会对Filename或FilenameW感兴趣。将这些字符串与GetData方法一起使用以获取所需的数据。

text/x-moz-url
FileGroupDescriptor
FileGroupDescriptorW
FileContents
UniformResourceLocator
UniformResourceLocatorW
text/x-moz-url-data
text/x-moz-url-desc
text/uri-list
text/_moz_htmlcontext
text/_moz_htmlinfo
text/html
HTML Format
Text
UnicodeText
System.String
application/x-moz-nativeimage
DeviceIndependentBitmap
FileDrop
FileNameW
FileName
Preferred DropEffect
application/x-moz-file-promise-url
application/x-moz-file-promise-dest-filename
DragImageBits
DragContext