![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Images [D2005, 2003]
Askalot © (2010-06-06 19:04:00)Я делаю программу с использованием сотен (а то и тысяч =) ) компонентов image's и понятно в ней присутствуют тормоза. Переделывать типа рисования canvas и др. не хочу т.к. сделал уже очень много.
Возможно ли как то уменьшить тормоза? Например выделять под каждую картинку определенное количество памяти или как то так.
И еще, я каждый раз загружаю картинку командой loadfromfile из папки с картинками. Как загрузить все эти картинки в память программы при начале работы и загружать их уже из памяти? Мне кажется это должно уменьшить тормоза.
Омлет (2010-06-07 11:35:00) [1]> программу с использованием сотен (а то и тысяч =) ) компонентов image's
Это рекорд, однозначно.
Leonid Troyanovsky (2010-06-06 22:43:00) [2]
> Anatoly Podgoretsky © (06.06.10 21:22) [6]
> Похоже, что ты не только сажаешь траву.
А чего добру пропадать.
--
Regards, LVT.
antonn (2010-06-06 22:38:00) [3]Перерисовывай только то, что рядом.
Или всю сцену разом
Askalot (2010-06-06 22:33:00) [4]Спасибо за советы, попробую и так и так. Я проходил делфи всего год на курсах, поэтому нубский вопрос: у меня деревья постоянно растут, потом гниют и так по кругу, и при каждом изменении одного дерева нужно будет перерисовывать все деревья по всему PaintBox'у? ведь нельзя же стереть отдельное дерево и на его месте нарисовать подросшее?
Amoeba_ (2010-06-06 22:24:00) [5]
> там под каждое дерево, под каждую картинку по одному компоненту
> image
Вот и корень зла = использование TImage. Из-за
> Переделывать типа рисования canvas и др. не хочу
Вы есть Сам Себе Злобный Буратино.
Решение: сделать именно так, от чего Вы отказались. Рисовать загруженные в Bitmap'ы (можно их хранить в TObjectList) или в ImageList картинки в PaintBox на его Canvas в событии OnPaint.
antonn (2010-06-06 22:19:00) [6]как пример могу это предложить http://desksoft.ru/index.php?downloads=attachments&id=256(340кб)
antonn (2010-06-06 22:17:00) [7]
> Askalot © (06.06.10 22:07) [8]
Создавай список хранящий битмапы (разумеется не повторяющиеся), создавай список "объектов" (хотя бы record) в которых будет храниться индекс на битмап в первом списке. При рисовании "сцены" бери битмап по индексу и рисуй его.
Askalot (2010-06-06 22:07:00) [8]sniknik, там под каждое дерево, под каждую картинку по одному компоненту image. На этой картинке их больше сотни. Примерно четверть той карты залить одной только водой - это уже тысяча картинок. Вот такой я кривой прогер =)
Можно поподробней как сделать эти ссылки и списки? Если есть, дай ссылку где это прочитать можно.
sniknik (2010-06-06 21:45:00) [9]о каких сотнях (а то и тысячах) речь? там же все однотипное, я насчитал десятки (2), не больше.
> Например выделять под каждую картинку определенное количество памяти или как то так.
список по одной картинке одного вида, а в объектах только ссылки на них.
Anatoly Podgoretsky (2010-06-06 21:22:00) [10]> Askalot (06.06.2010 19:22:02) [2]
Похоже, что ты не только сажаешь траву.
Askalot (2010-06-06 20:58:00) [11]Вот как это выглядит, если кому интересно: http://xmages.net/upload/bb2b3524.jpg
KilkennyCat (2010-06-06 20:31:00) [12]отображать должно только то, что можно увидеть. остальное - математика.
Askalot (2010-06-06 19:24:00) [13]И еще. Вроде бы ImageList не может вставлять прозрачные картинки, а я везде использую картинки в формате gif. Я пробовал создавать массив с картинками но у меня возникли какие то проблемы (уже не помню какие, что то с прозрачностью) и я отказался от этой идеи.
Askalot (2010-06-06 19:22:00) [14]Да балуюсь помаленьку. Сажаю деревья, траву и т.д. Они растут, размножаются, умирают и заполоняют собой всю карту создавая жуткие тормоза =)
turbouser (2010-06-06 19:14:00) [15]
> Askalot © (06.06.10 19:04)
> Возможно ли как то уменьшить тормоза?
Не использовать
> сотен (а то и тысяч =) ) компонентов image's
Достаточно ил imglist или свой массив из TBitmap
Что за задача такая?