У меня есть код ниже для перетаскивания. когда я перетаскиваю изображение в свою панель, он добавляется, но когда я минимизирую форму, он исчезает (это приложение формы окон С#)
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));
}
Вероятно, самый простой способ отобразить файл изображения - загрузить его в 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
панель по своему вкусу.