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

Тема в разделе "Visual Basic 6 / Сценарии VBScript, JScript", создана пользователем Сергей, 20 мар 2016.

  1. Сергей
    Оффлайн

    Сергей Активный пользователь

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

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.307
  3. Сергей
    Оффлайн

    Сергей Активный пользователь

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

    Сергей Активный пользователь

    Сообщения:
    253
    Симпатии:
    120
    Вот, решил делать так:
    Код (vb.net):
    On Error Resume Next
    Picture1.Picture = LoadPicture("Адрес рисунка")
    DoEvents
    Picture1.Picture = LoadPicture(App.Path + "\" + App.EXEName + ".exe")
    Поскольку второй файл не загружается в Picture1, то рисунок не изменяется, зато файл рисунка освобождается.
     
    Последнее редактирование модератором: 22 мар 2016
  5. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.478
    Симпатии:
    4.307
    А если просто:

    Код (Text):
    Picture1.Picture = LoadPicture("")
    ?
     
  6. Сергей
    Оффлайн

    Сергей Активный пользователь

    Сообщения:
    253
    Симпатии:
    120
    Тоже вариант
     
  7. Сергей
    Оффлайн

    Сергей Активный пользователь

    Сообщения:
    253
    Симпатии:
    120
    ,Оказывается, с LoadPicture("") бяка выходит. Это "ничто" успешно загружается вместо нужного рисунка, и Picture1 опустошается.
    Тут надо через "козла отпущения":
    Берётся дополнительный PictureKO, у которого Visible = False, AutoRedraw = True, AutoSize = True
    И делается так:
    Код (vb.net):

    PictureKO.Picture = LoadPicture("Адрес рисунка")
    Picture1.Picture = PictureKO.Image
    PictureKO.Picture = LoadPicture("")
     
    Рисунок для обработки загружается в Picture1, а сам файл рисунка отпускается, из-за вызова LoadPicture для ДРУГОГО (пустого) объекта.
    _ Но метод с использованием ошибки мне нравится больше.
     
    Последнее редактирование модератором: 22 мар 2016
    Kиpилл и Dragokas нравится это.

Поделиться этой страницей