Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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
Что за задача такая?


Наверх

Титульная страница Поиск, карта сайта Написать письмо