powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Drag&Drop изображений
3 сообщений из 3, страница 1 из 1
Drag&Drop изображений
    #32771618
Dr. Yes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Никак не могу подружиться с Drag&Drop-ом изображений в/из моеё формы.

Задача изначально такая: из Internet Explorer-a необходимо перетащить неизвестное кол-во картинок (в основном - jpg, но изредка возможна встреча gif-ов) на форму, а затем сохранить их в определенном каталоге под именами img1.jpg, img2.jpg...
...
Рейтинг: 0 / 0
Drag&Drop изображений
    #32772140
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в .net нет поддержки для формата DataFormats.Dib (CF_DIB)
может это поможет:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
  System.IO.MemoryStream stream=e.Data.GetData(DataFormats.Dib) as System.IO.MemoryStream;
  if(stream!=null)
  { byte[] img=stream.ToArray();
    IntPtr ptr=Marshal.AllocCoTaskMem(Marshal.SizeOf(img[0])*img.Length);
    Marshal.Copy(img, 0, ptr, img.Length);
    try
    { pictureBox1.Image = TwainGui.DibToImage.WithStream(ptr);
    }
    finally
    { Marshal.FreeCoTaskMem(ptr);
    }
  }
}

скачать исходники библиотеки TwainGui можно с сайта автора Thomas Scheidegger
Converting memory DIB to .NET 'Bitmap' object
---
EXPERIMENTAL, USE AT YOUR OWN RISK
...
Рейтинг: 0 / 0
Drag&Drop изображений
    #32772145
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
второй способ - использовать тот факт, что IE при захвате картинки помещает в Data информацию сразу в нескольких форматах: Dib и FileDrop (реально еще и в форматах FileName, FileNameW и пр)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
  if(!e.Data.GetDataPresent(DataFormats.Dib) ||
     !e.Data.GetDataPresent(DataFormats.FileDrop)) return;

  try
  { // имена файлов с картинками 
    string[] fs=(string[])e.Data.GetData(DataFormats.FileDrop);
    if(fs.Length>0) // показать только первый
      pictureBox1.Image=Image.FromFile(fs[0]);
  }
  catch(Exception ex)
  { 
  }
}
но в этом случае есть свои тонкости...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Drag&Drop изображений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]