Как закрыть рисунок?

Сергій

Разработчик
Сообщения
1,045
Реакции
300
_ Загружаю рисунок
Код:
Picture1.Picture = LoadPicture("Адрес рисунка")
, потом его редактирую...
_ При попытке сохранить
Код:
SavePicture Picture1.Image, "Адрес рисунка"
с тем же адресом (то есть в тот же файл) - всплывает сообщенио об ошибке "Файл уже открыт". Более того, это не дает переименовать исходный рисунок, чтобы на его месте сохранить новый.
_ Это получается, что файл рисунка нужно сначала закрыть? Как? Или я открыл его некорректно?
 
Я пробую копировать файл в отдельную папку под именем дата_в_виде_чила.bmp, и открывать именно его, а результат сохранять исходный ...\Имя.bmp. А при повторном включении проги - она сначала чистит ту отдельную папку. Или при выключении открывет бортовой рисунок, чтобы Picture1 отпустил все файлы и позволил очистить временную папку. Но это как то "обдурю но добъюсь"
 
Вот, решил делать так:
VB.NET / VBA:
On Error Resume Next
Picture1.Picture = LoadPicture("Адрес рисунка")
DoEvents
Picture1.Picture = LoadPicture(App.Path + "\" + App.EXEName + ".exe")
Поскольку второй файл не загружается в Picture1, то рисунок не изменяется, зато файл рисунка освобождается.
 
Последнее редактирование модератором:
,Оказывается, с LoadPicture("") бяка выходит. Это "ничто" успешно загружается вместо нужного рисунка, и Picture1 опустошается.
Тут надо через "козла отпущения":
Берётся дополнительный PictureKO, у которого Visible = False, AutoRedraw = True, AutoSize = True
И делается так:
VB.NET / VBA:
PictureKO.Picture = LoadPicture("Адрес рисунка")
Picture1.Picture = PictureKO.Image
PictureKO.Picture = LoadPicture("")
Рисунок для обработки загружается в Picture1, а сам файл рисунка отпускается, из-за вызова LoadPicture для ДРУГОГО (пустого) объекта.
_ Но метод с использованием ошибки мне нравится больше.
 
Последнее редактирование модератором:
Назад
Сверху Снизу