FreeImage() удаляет по номеру, а у меня ID после ResizeImage()
как по ид удалять картинки? идёт серьёзное пожирание памяти
сохранять номера?
использовать ImageID(), это не очень удобно, и переделывать много
вроде решения есть, но может есть более приличное решение?
Удаление картинок
Сообщений 1 страница 13 из 13
Поделиться102.12.2021 13:21:41
Поделиться202.12.2021 14:38:32
у меня ID после ResizeImage()
Точно также, используйте FreeImage().
В чем вообще сложность? ResizeImage() не создает новых картинок, а только изменяет их размер.
Поделиться304.12.2021 19:59:18
В чем вообще сложность?
а сложность в том, что сохраняется ID после ResizeImage(), а картинка удаляется по номеру
пришлось переделывать, сохранять номер и кругом распихивать ImageID()
память перестала уходить
Поделиться404.12.2021 21:43:51
сложность в том, что сохраняется ID после ResizeImage(), а картинка удаляется по номеру
ResizeImage не создает новые картинки. Все равно не понятно в чем сложность. Посмотреть бы код.
Поделиться506.12.2021 08:42:08
да переделал уже
imageID=ResizeImage(#number..... может ты не знал что она возвращает imageID, отсюда и непонятки?
FreeImage(#number) и IsImage(#number)
в проге везде нужно было imageID, его я и сохранял, а номера "терялись"
вот из справки
Возвращаемое значение
Возвращает не нулевое значение, если операция прошла успешно, в противном случае ноль.
это самое не нулевое значение и есть imageID
неочевидно, но это факт
наверно надо было в лоб спросить о возможности получить из imageID обратно #number
что то такое было на старом форуме
Поделиться606.12.2021 10:48:05
...
неочевидно, но это факт
...
В таких инструментах как PB всё таки лучше ориентироваться на документацию.
В другой версии, в другой системе, в другом тулките (gtk2,gtk3,qt5) факт может оказаться совсем и не фактом.
И конечно могу ошибаться, но во всех примерах думаю не зря в местах, где требуется не #number а ImageId(#number) всегда есть вызов функции получения системного ID включая циклы и прочее, а не получение его (ID) один раз в начале программы.
Возможно допускается, что в каких то случаях (а у PB таки есть теневая сборка мусора) ID в отличие от #number не статичен, т.е. может меняться но его всегда можно получить по #number.
p.s. Но это не точно (c) BigRussianBoss
Отредактировано useful (06.12.2021 14:23:45)
Поделиться706.12.2021 11:00:21
да но, экзешник работать будет
а проблемы вылезут при попытке генерить по этим текстам, тут как повезёт
Поделиться806.12.2021 18:35:41
imageID=ResizeImage(#number..... может ты не знал что она возвращает imageID, отсюда и непонятки?
Смысл если функция требует номер картинки, а не системный идентификатор?
Поделиться909.12.2021 06:55:16
смысл? да всё просто, после ресайза везде требовался ИД, а номер только для удаления
вот только я не сразу это понял, двойные стандарты, что поделать
Поделиться1009.12.2021 08:34:24
newJS
как всегда я путаюсь в терминах, пока всё не прочитаешь. Номер этот тот же ID, потому что ID это идентификатор, а разве номер не является идентификатором, ну ладно если функция ImageID, то наверно надо считать что возвращает идентификатор, который я всегда называю дескриптор, англосаксы его называют хендл, ну или его можно назвать системный идентификатор в отличии от внутреннего PureBasic-овского.
Не важно, а разве нет WinAPI-функций по удалению? Конечно есть.
DestroyIcon_(hicon)
Кстати, весомый аргумент, если в используемых функциях требуется дескриптор, и я при каждом запросе в цикле буду вызывать ImageID(), то не будет ли тратится больше времени? Возможно есть некий массив-таблица "идентификатор=дескриптор" и функция ImageID просто обращается к номеру массива например 5 и берёт из адреса дескриптор и всё это достаточно быстро даже для цикла. В моём случае когда я использовал например 30 иконок и это бы точно не вызвало бы какого либо замедления.
Отредактировано AZJIO (09.12.2021 08:40:17)
Поделиться1109.12.2021 09:52:36
AZJIO в РВ есть два вида идентификаторов
внутренний РВ, его называют номер
и виндовый, его называют ImageID и ещё по всякому
посмотри в справке про картинки, некоторые функции работают с числом, а некоторые с ImageID
Поделиться1209.12.2021 11:46:31
newJS
В справке то написанное зависит от того кто писал. Пётр ещё на прошлом форуме сказал что в Linux нет декскриптора и там это называется идентификатором. Я предлагал упоминать "который в Windows называется дескриптором", дабы сразу понимать что за идентификатор. И позже и видел в справке "так называемый дескриптор" и частое его упоминание, как оказалось и в оригинале часто упоминается хендл т.е. дескриптор и даже есть отдельная страничка Handles and Numbers, поэтому я и призываю называть вещи теми именами, которыми они называются, дабы каждый раз не разгадывать какой именно идентификатор имеется ввиду.
Как я понимаю в среде программирование используется стойкое название Handle используемое в префиксах hwnd. Handle как я понимаю имеет дескриптор настолько уникальный что какой либо дескриптор не совпадает ни с каким другим дескриптором, будь то дескриптором окна, шрифта, кисти или иконки, он уникальный в ОС. И он в русскоязычных описаниях называется дескриптор.
Отредактировано AZJIO (09.12.2021 11:57:07)
Поделиться1310.12.2021 20:20:04
наверно надо было в лоб спросить о возможности получить из imageID обратно #number
Похожие темы
Улучшение справки | PureBasic для Windows | 18.01.2025 |
CodeLocalization | PureBasic для Windows | 06.04.2024 |
Поиск дубликатов файлов | PureBasic для Windows | 01.07.2022 |
Виртуальный ini-файл | PureBasic для Windows | 18.08.2021 |
Светодиодная матрица - МОДЖЕТ (антигаджет) на Пурике | Вопросы по PureBasic | 11.04.2012 |