• Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.

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

Сергій

Активный пользователь
Сообщения
332
Симпатии
166
#1
_ Загружаю рисунок
Код:
Picture1.Picture = LoadPicture("Адрес рисунка")
, потом его редактирую...
_ При попытке сохранить
Код:
SavePicture Picture1.Image, "Адрес рисунка"
с тем же адресом (то есть в тот же файл) - всплывает сообщенио об ошибке "Файл уже открыт". Более того, это не дает переименовать исходный рисунок, чтобы на его месте сохранить новый.
_ Это получается, что файл рисунка нужно сначала закрыть? Как? Или я открыл его некорректно?
 

Сергій

Активный пользователь
Сообщения
332
Симпатии
166
#3
Я пробую копировать файл в отдельную папку под именем дата_в_виде_чила.bmp, и открывать именно его, а результат сохранять исходный ...\Имя.bmp. А при повторном включении проги - она сначала чистит ту отдельную папку. Или при выключении открывет бортовой рисунок, чтобы Picture1 отпустил все файлы и позволил очистить временную папку. Но это как то "обдурю но добъюсь"
 

Сергій

Активный пользователь
Сообщения
332
Симпатии
166
#4
Вот, решил делать так:
VB.NET:
On Error Resume Next
Picture1.Picture = LoadPicture("Адрес рисунка")
DoEvents
Picture1.Picture = LoadPicture(App.Path + "\" + App.EXEName + ".exe")
Поскольку второй файл не загружается в Picture1, то рисунок не изменяется, зато файл рисунка освобождается.
 
Последнее редактирование модератором:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,692
Симпатии
5,593
#5
А если просто:

Код:
Picture1.Picture = LoadPicture("")
?
 

Сергій

Активный пользователь
Сообщения
332
Симпатии
166
#7
,Оказывается, с LoadPicture("") бяка выходит. Это "ничто" успешно загружается вместо нужного рисунка, и Picture1 опустошается.
Тут надо через "козла отпущения":
Берётся дополнительный PictureKO, у которого Visible = False, AutoRedraw = True, AutoSize = True
И делается так:
VB.NET:
PictureKO.Picture = LoadPicture("Адрес рисунка")
Picture1.Picture = PictureKO.Image
PictureKO.Picture = LoadPicture("")
Рисунок для обработки загружается в Picture1, а сам файл рисунка отпускается, из-за вызова LoadPicture для ДРУГОГО (пустого) объекта.
_ Но метод с использованием ошибки мне нравится больше.
 
Последнее редактирование модератором:
Сверху Снизу