Как перетащить файл изображения в приложение C # WPF - PullRequest
1 голос
/ 13 ноября 2010

Привет Я новичок в WPF C #, и я разработал простое приложение CF WPF, которое представляет собой простое окно, содержащее элемент управления изображением, и я хочу перетащить любой файл изображения с моего компьютера и поместить его в элемент управления изображением для его отображения. код ниже для донг это

в XML-файле

  <Image Height="150" Name="image1" Stretch="Fill" Width="200" AllowDrop="True" Drop="image1_Drop" DragEnter="image1_DragEnter"/> 

и внутри файла кода (* .cs)

private void image1_DragEnter(object sender, DragEventArgs e)
        {
            if(e.Data.GetDataPresent(DataFormats.Bitmap))
                e.Effects=DragDropEffects.Copy;
            else
                e.Effects=DragDropEffects.None;
        } 
    private void image1_Drop(object sender, DragEventArgs e)
        {

        image1.Source = (BitmapImage)e.Data.GetData(DataFormats.Bitmap);
        }

, но это не работает (при перетаскивании элемента управления изображением курсор превращается в круг, содержащий обратную косую черту), и я не знаю, почему кто-то может помочь заранее спасибо


Обновленный ответ

Я изменил код на следующий, но с той же проблемой

private void image1_DragEnter(object sender, DragEventArgs e)
        {

         if(e.Data.GetDataPresent(DataFormats.Text))
                e.Effects=DragDropEffects.Copy;
            else
                e.Effects=DragDropEffects.None;
        }

 private void image1_Drop(object sender, DragEventArgs e)
        {

             string fpath = (string)e.Data.GetData(DataFormats.Text);
             BitmapImage tmpImage=new BitmapImage((new Uri(fpath)));
             image1.Source = tmpImage;    

        }

Ответы [ 3 ]

1 голос
/ 05 мая 2011

Запускаете ли вы свое приложение или Visual Studio, в которой размещено приложение с правами администратора?

В этом случае Windows предотвращает операцию перетаскивания. В Windows 7 или Vista приложение с более низким уровнем безопасности (ваш Windows Explorer с обычными привилегиями пользователя) не может отправлять данные другому (ваше приложение или Visual Studio с административными привилегиями) с более высоким уровнем безопасности.

Попробуйте выполнить одно из следующих действий:

Запустите Visual Studio без прав администратора. Запустите ваше приложение вне Visual Studio без прав администратора. Включите и перейдите к учетной записи администратора в ОС. В этом случае и ваш проводник Windows, и ваша Visual Studio будут иметь права администратора.

Приветствия

Jacob

1 голос
/ 13 июля 2011

У меня была такая же проблема.В конце VS имеет этот странный сбой, где он не показывает возможность установить для параметра AllowDrop значение true, поэтому вам придется вручную его кодировать. Он не будет отображаться в Intellitype, но он заставит его работать!

Так что просто вставьте PictureBox.AllowDrop = true; в ваш код, и он будет работать: D

1 голос
/ 13 ноября 2010

При перетаскивании файла из файловой системы в программу вы не получаете растровые данные в буфере обмена. Вы получите полный путь к файлу в виде строки. Вам нужно открыть файл, прочитать данные и затем установить источник изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...