C# После загрузки картинки в picturebox удалить её с диска?
Загружаю картинку в picturebox. Потом её хочу удалить с диска. Но вылазит исключение, что файл занят. Уже перед удаление делал так:
picturebox1.Image = null;
— не помогает. Как быть? Спасибо.
Загружаю так:
picturebox1.load(путь_к_картинке);
- Вопрос задан более трёх лет назад
- 4854 просмотра
Комментировать
Решения вопроса 1
Алексей Немиро @AlekseyNemiro
full-stack developer
Работать с файлами лучше через FileStream, чтобы полностью контролировать весь процесс:
string filePath = "123.jpg"; using (var file = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Inheritable)) < pictureBox1.Image = Image.FromStream(file); >File.Delete(filePath);
Многие упрощенные методы работы с файлами нередко блокируют доступ к файлам. Такие методы имеет смысл использовать только для одноразовых файловых операций (когда нужно один раз прочитать или записать данные и не более этого).
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Как очистить picturebox c
Нравится ресурс?
Правила раздела Visual Basic: Общие вопросы
Здесь обсуждаются вопросы по языку Visual Basic 1-6 (а так же по схожим языкам, как, например, PowerBASIC).
Вопросы по Visual Basic .NET (это который входит в состав Visual Studio 2002/2003/2005/2008+, для тех, кто не в курсе) обсуждаются в разделе .NET.
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что Вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются. Студенты, вам сюда: ПОМОЩЬ СТУДЕНТАМ !
4. Используйте теги [ code=vba ] . текст программы. [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Формулируйте свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной (и более) давности, без веских на то причин.
Модераторы: SCINER, B.V.
‘> Очистить PictureBox , Как заменить CLS?
Рисунки PictureBox
Элемент управления PictureBox (Windows Forms) предназначен для отображения графических объектов в различных форматах. Это может быть растровое изображение (файл BMP), пиктограмма (файл ICO), метафайл (файл WMF или EMF), а также файлы GIF и JPEG. Отображаемое изображение определяется свойством Image, которое может быть задано во время выполнения или в режиме разработки. Кроме того, изображение можно задать путем указания значения свойства ImageLocation с последующей загрузкой изображения в синхронном режиме с помощью метода Load или в асинхронном режиме с помощью метода LoadAsync. Свойство SizeMode управляет соответствием размеров рисунка и элемента управления. Создание рисунка на этапе разработки приложенияЧтобы добавить на форму рисунок выполните следующие действия:
- Добавьте на форму элемент управления PictureBox.
- Откройте одним из следующих способов окно для задания пути изображения:
- Откройте панель Задачи щелкнув по символу треугольника в правом верхнем углу элемента управления PictureBox и нажмите команду Выберите изображение.
- Щелкните по символу
в свойстве Image для элемента управления PictureBox в окне Свойства.
В результате откроется окно Выбор ресурса.
- Нажмите кнопку Импорт, выберите графический файл и нажмите кнопку Открыть.
В результате выбранный файл будет скопирован в папку с проектом; его название появится в окне Выбор ресурса в нижнем списке, а справа появится изображение.
- Нажмите ОК.
- Отрегулируйте заполнение элемента управления PictureBox выбранным изображением одним из следующих способов:
- В панели Задачи разверните список Режим изменения размера и выберите подходящий режим.
- В окне Свойства для элемента управления PictureBox раскройте список SizeMode и выберите подходящий режим отображения рисунка.
Возможные режимы:
- Normal – рисунок будет находиться в верхнем левом углу элемента управления, если рисунок крупнее элемента управления, то нижний и правый края рисунка будут обрезаны.
- CenterImage – рисунок будет находиться в центре элемента управления; если рисунок крупнее элемента управления, то края рисунка будут обрезаны. З
- AutoSize – размер элемента управления изменяется в зависимости от размера рисунка.
- StretchImage – что размер рисунка изменяется в зависимости от размера элемента управления.
- Zoom – рисунок будет увеличен или уменьшен с сохранением пропорций и помешен целиком в элемент управления.
Установка изображений во время выполнения (Windows Forms) Имеется возможность задания рисунка, отображаемого элементом управления Windows Forms PictureBox, программными средствами.
Чтобы задать рисунок программными средствами задайте свойство Image при помощи метода FromFile класса Image, например:
private void button12_Click(object sender, EventArgs e) < pictureBox1.Image = Image.FromFile(@"D:\p1002.bmp");> Удаление графического объекта Сначала освободите память, используемую изображением, а затем удалите графический объект следующим образом: if (pictureBox1.Image != null) < pictureBox1.Image.Dispose();pictureBox1.Image = null; > Этот код удалит изображение даже в том случае, если графический объект был загружен в элемент управления в режиме разработки. Примечание. При наличии проблем с управлением памятью, она будет очищена позднее при сборке мусора. Установка изображений во время выполнения (Windows Forms) на других элементах управления Чтобы задать рисунок программными средствами на другом элементе управления задайте соответствующее свойство при помощи метода FromFile класса Image. Например, фоновый рисунок для формы можно задать с помощью кода: glob.frm1.BackgroundImage = Image.FromFile(System.IO.Directory.GetCurrentDirectory()+@»\Ветер.jpg«); Команда System.IO.Directory.GetCurrentDirectory() осуществляет переход в текущую директорию. Текущей директорией является папка с исполняемым файлом, как правило, папка Bin. В данном примере файл Ветер.jpg помещен в папку Bin. Удаление графического объекта с элементов управления Удаление рисунка из элемента управления можно осуществить путем присвоения свойству, отвечающему за рисунок, значения null. Например, фоновый рисунок для формы можно удалить с помощью кода: glob.frm1.BackgroundImage = null; Изменение размера рисунка на элементе управления во время выполнения проекта Отрегулировать размещение рисунка на элементе управления программным путем можно с помощью свойства элемента управления, отвечающего за макет рисунка. Например, фоновый рисунок для формы можно отрегулировать с помощью кода: glob.frm1.BackgroundImageLayout = ImageLayout.Stretch; Размещение изображения и изменение его размера во время выполнения Чтобы изменить местоположение рисунка в элементе управления или изменить его размеры во время выполнения установите свойству SizeMode значение Normal (по умолчанию), AutoSize, CenterImage, Zoom или StretchImage. В приведенном ниже примере в уже имеющийся на форме элемент управления PictureBox добавляется рисунок. private void button12_Click(object sender, EventArgs e) < pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;pictureBox1.Image = Image.FromFile(@»D:\p1002.bmp»); > Примечание. Растяжение границ рисунка (особенно в растровом формате) может привести к ухудшению качества изображения.