Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Какие ограничения у ImageList и как их обойти

16K
23 июня 2006 года
kostyanet
24 / / 23.06.2006
Сделал для psd файлов вьюер, простой, там превью в файлах готовое - только взять, так вот, при попытке загрузить штук 800 таких ноготков (thumbnails) ImageList вопит о нехватке памяти.

Чтобы очистить эксперимент, я попробовал в него загрузить картинку 2000 на 3000 пикселов RGB - завопил.

Мне такие большие картинки не нужно. Но 800 превьюшек (100 на 100 пикселов) это мало. Я сделал страницы (pagination), но все это полный отстой.

Вопрос такой. Можно ли заменить ImageList чем-то без ограничений, или как обойти имеющиеся. И вообще, что о них известно?
725
30 июня 2006 года
UnErase
190 / / 08.06.2006
А ты в ImageList картинки загружаешь динамически или статически?
725
30 июня 2006 года
UnErase
190 / / 08.06.2006
Если это ограничение компонента ImageList, то попробуй загружать картинки динамически, и, соответственно создать динамический массив типа ImageList. Тогда сможешь загрузить столько картинок, сколько у тебя поместиться в ОП. :)
16K
05 июля 2006 года
kostyanet
24 / / 23.06.2006
Какой массив? ListView, который эти гробаные картинки отображает к "массиву" как линковать в коде?
21K
17 сентября 2006 года
sashenka
3 / / 17.09.2006
мдаа... "динамический массив типа ImageList" :D (ухохатываюсь)
ответы "Специалистов" оставляют желать лучшего.. называется лиж бы отмазаться...

UnErase, проблема была четко обьяснена, набор картинок нужно показать в ListView, как вы предстваляете себе отображение в ListView массива имаджлистов?
21K
17 сентября 2006 года
sashenka
3 / / 17.09.2006
Эта проблема обусловлена тем что в ОС Windows есть ограничение на размеры битмапа, какие ограничения и как их вычислить ни кто не знает, в мсдне я не нашел, нашел только что в 9х системах это ограничение составляет 16Мб, в XP/2k не известно.

Если кто-то знает как это узнатть, большая просьбы ответить: "shurik(at)mail(dot)zp(dot)ua".

как решить эту проблему, я вижу, пока, только один способ. это создать свой компонент (в котором прийдется переопределить около 100 функций :eek:) и сделать обращение не через ImageList_xxxxxx-функции а через дамп памяти.

если у вас, kostyanet, уже есть решение этой проблемы, просьба поделитесь:
"shurik(at)mail(dot)zp(dot)ua".
21K
17 сентября 2006 года
sashenka
3 / / 17.09.2006
могу посоветовать воспользоваться функцией CustomDrawItem

и сделать что-то типа:
DefaultDraw := False;
ARect := Item.DisplayRect(drIcon);
Sender.Canvas.StretchDraw(ARect,TBitmap(Item.Data));
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог