Próbuję zaimplementować funkcjonalność w mojej aplikacji WPF, aby przeciągnąć obraz z przeglądarki do okna w mojej aplikacji WPF.Przeciąganie i upuszczanie obrazu z przeglądarki do aplikacji WPF
Kod działa dobrze z przeglądarką Firefox i Windows Explorer, ale pojawiają się problemy z Chrome i IE (jeszcze nie próbowałem żadnych innych przeglądarek).
Oto fragment kodu:
private void Drag_Enter(object sender, DragEventArgs e)
{
foreach (string format in e.Data.GetFormats())
Console.WriteLine(format);
Console.WriteLine("Effects:" + e.AllowedEffects);
}
private void Drag_Drop(object sender, DragEventArgs e)
{
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
ImageSourceConverter converter = new ImageSourceConverter();
foreach (string file in files)
{
if (converter.IsValid(file))
{
// Do something with the image
}
}
}
Patrząc na wyjściu, wydaje się, że Firefox faktycznie zapisuje obraz do schowka, natomiast Chrome jest po prostu chwytając html obrazu, natomiast IE nie robić cokolwiek z tym.
Ktoś ma pewien wgląd w to, jak mogę uzyskać funkcjonalność w różnych przeglądarkach?
Aktualizacja: Kilka obejścia znalazłem są do analizowania html (Chrome/Firefox) do źródła obrazu, a następnie pobrać ze źródła przy użyciu coś podobnego obiektu WebClient. Wolałaby jednak metodę, która ma silniejsze sprawdzanie typu pliku.
IE9 i Firefox mają format pliku DeviceIndependentBitmap, który jest dostępny podczas przeciągania obrazu bez hiperłącza. Wydaje się, że jest to bezpieczniejsza alternatywa, chociaż wydaje się, że Chrome jej nie obsługuje. Nie jest to również użyteczne w przypadku obrazów hiperłączy.
Z Firefox, wyjście jest (Drag_Enter z jakiegoś powodu zostanie zwolniony dwa razy):
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
Effects: Link, All
Chrome (drag_enter również pobiera opalane dwa razy):
DragContext
DragImageBits
FileGroupDescriptorW
FileContents
HTML Format
text/html
text/x-moz-url
UniformResourceLocatorW
UniformResourceLocator
Text
UnicodeText
System.String
Effects: Copy, Move, Link
Internet Explorer (ponownie , drag_enter wystrzelił dwukrotnie):
UntrustedDragDrop
msSourceUrl
FileGroupDescriptor
FileGroupDescriptorW
FileContents
UniformResourceLocator
Effects: Link