изображение исчезает при сворачивании формы, прокрутка не отображается

1

У меня есть код ниже для перетаскивания. когда я перетаскиваю изображение в свою панель, он добавляется, но когда я минимизирую форму, он исчезает (это приложение формы окон С#)
1: Какая причина этого?
2. Как я могу это исправить?
Я устанавливаю свойство автоматической прокрутки панели1 и разрешаю drop to true, но когда изображение больше размера прокрутки формы, не отображается.
3: Как я могу исправить проблему со свитком?

private void panel1_DragEnter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.All;
}

private void panel1_DragDrop(object sender, DragEventArgs e)
{
    string[] imagePath =(string[]) e.Data.GetData(DataFormats.FileDrop);
    Graphics g = panel1.CreateGraphics();
    g.DrawImage(Image.FromFile(imagePath[0]), new Point(0, 0));
}
  • 0
    Возможное дублирование среди многих других График панели будет идти после того, как форма свернута, C #
  • 0
    Вам, конечно, придется кэшировать не «Draw Actions», а имя файла. Или пойти на PictureBox. Для полос прокрутки должно отображаться не изображение, а панель, которая должна быть больше формы. Также посмотрите на хитрость вложения Panel (или PictureBox) в Panel. Размер вложенного элемента управления соответствует полному размеру изображения, а для внешнего - значение «Автопрокрутка».
Показать ещё 2 комментария
Теги:
winforms
graphics
drag-and-drop
panel

1 ответ

0
Лучший ответ

Вероятно, самый простой способ отобразить файл изображения - загрузить его в PictureBox. Таким образом, вам не нужно беспокоиться о его сохранении, перерисовывая его.

Для этого вы просто меняете свой код на

string[] imagePath;

private void panel1_DragDrop(object sender, DragEventArgs e)
{
  imagePath = (string[]) e.Data.GetData(DataFormats.FileDrop);
  if (imagePath.Length > 0 )   pictureBox1.ImageLocation = imagePath[0];
}

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

Чтобы разрешить прокрутку, вы помещаете PictureBox внутри Panel и LoadCompleted сценарий события LoadCompleted:

private void pictureBox1_LoadCompleted(object sender, AsyncCompletedEventArgs e)
{
    pictureBox1.ClientSize = pictureBox1.Image.Size;
}

Панели необходимо установить AutoScroll в значение true, PictureBox должен сидеть в Location 0; 0 и иметь SizeMode Normal. Не Dock PictureBox и не Anchor его к растягиванию! Вы можете Dock или Anchor панель по своему вкусу.

  • 0
    случайно у вас есть ответ на этот пост, который я спросил вчера?
  • 0
    Нет я не Это может помочь добавить имена расширений.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню