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

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

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

  1. Сергей

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

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

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

    Сообщения:
    5.147
    Симпатии:
    5.030
  3. Сергей

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

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

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

    Сообщения:
    276
    Симпатии:
    126
    Вот, решил делать так:
    Код (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 Команда форума Супер-Модератор Разработчик Клуб переводчиков

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

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

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

    Сообщения:
    276
    Симпатии:
    126
    Тоже вариант
     
  7. Сергей

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

    Сообщения:
    276
    Симпатии:
    126
    ,Оказывается, с 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
    Кирилл и Dragokas нравится это.

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