Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.29;
Скачать: CL | DM;

Вниз

Images   Найти похожие ветки 

 
Askalot ©   (2010-06-06 19:04) [0]

Я делаю программу с использованием сотен (а то и тысяч =) ) компонентов image"s и понятно в ней присутствуют тормоза. Переделывать типа рисования canvas и др. не хочу т.к. сделал уже очень много.
Возможно ли как то уменьшить тормоза? Например выделять под каждую картинку определенное количество памяти или как то так.
И еще, я каждый раз загружаю картинку командой loadfromfile из папки с картинками. Как загрузить все эти картинки в память программы при начале работы и загружать их уже из памяти? Мне кажется это должно уменьшить тормоза.


 
turbouser ©   (2010-06-06 19:14) [1]


> Askalot ©   (06.06.10 19:04)  


> Возможно ли как то уменьшить тормоза?

Не использовать
> сотен (а то и тысяч =) ) компонентов image"s

Достаточно ил imglist или свой массив из TBitmap
Что за задача такая?


 
Askalot ©   (2010-06-06 19:22) [2]

Да балуюсь помаленьку. Сажаю деревья, траву и т.д. Они растут, размножаются, умирают и заполоняют собой всю карту создавая жуткие тормоза =)


 
Askalot ©   (2010-06-06 19:24) [3]

И еще. Вроде бы ImageList не может вставлять прозрачные картинки, а я везде использую картинки в формате gif. Я пробовал создавать массив с картинками но у меня возникли какие то проблемы (уже не помню какие, что то с прозрачностью) и я отказался от этой идеи.


 
KilkennyCat ©   (2010-06-06 20:31) [4]

отображать должно только то, что можно увидеть. остальное - математика.


 
Askalot ©   (2010-06-06 20:58) [5]

Вот как это выглядит, если кому интересно: http://xmages.net/upload/bb2b3524.jpg


 
Anatoly Podgoretsky ©   (2010-06-06 21:22) [6]

> Askalot  (06.06.2010 19:22:02)  [2]

Похоже, что ты не только сажаешь траву.


 
sniknik ©   (2010-06-06 21:45) [7]

о каких сотнях (а то и тысячах) речь? там же все однотипное, я насчитал десятки (2), не больше.

> Например выделять под каждую картинку определенное количество памяти или как то так.
список по одной картинке одного вида, а в объектах только ссылки на них.


 
Askalot ©   (2010-06-06 22:07) [8]

sniknik, там под каждое дерево, под каждую картинку по одному компоненту image. На этой картинке их больше сотни. Примерно четверть той карты залить одной только водой - это уже тысяча картинок. Вот такой я кривой прогер =)
Можно поподробней как сделать эти ссылки и списки? Если есть, дай ссылку где это прочитать можно.


 
antonn ©   (2010-06-06 22:17) [9]


> Askalot ©   (06.06.10 22:07) [8]

Создавай список хранящий битмапы (разумеется не повторяющиеся), создавай список "объектов" (хотя бы record) в которых будет храниться индекс на битмап в первом списке. При рисовании "сцены" бери битмап по индексу и рисуй его.


 
antonn ©   (2010-06-06 22:19) [10]

как пример могу это предложить http://desksoft.ru/index.php?downloads=attachments&id=256 (340кб)


 
Amoeba_   (2010-06-06 22:24) [11]


> там под каждое дерево, под каждую картинку по одному компоненту
> image

Вот и корень зла = использование TImage. Из-за

> Переделывать типа рисования canvas и др. не хочу

Вы есть Сам Себе Злобный Буратино.

Решение: сделать именно так, от чего Вы отказались. Рисовать загруженные в Bitmap"ы (можно их хранить в TObjectList) или в ImageList картинки в PaintBox на его Canvas в событии OnPaint.


 
Askalot ©   (2010-06-06 22:33) [12]

Спасибо за советы, попробую и так и так. Я проходил делфи всего год на курсах, поэтому нубский вопрос: у меня деревья постоянно растут, потом гниют и так по кругу, и при каждом изменении одного дерева нужно будет перерисовывать все деревья по всему PaintBox"у? ведь нельзя же стереть отдельное дерево и на его месте нарисовать подросшее?


 
antonn ©   (2010-06-06 22:38) [13]

Перерисовывай только то, что рядом.
Или всю сцену разом


 
Leonid Troyanovsky ©   (2010-06-06 22:43) [14]


> Anatoly Podgoretsky ©   (06.06.10 21:22) [6]

> Похоже, что ты не только сажаешь траву.

А чего добру пропадать.

--
Regards, LVT.


 
Омлет ©   (2010-06-07 11:35) [15]

> программу с использованием сотен (а то и тысяч =) ) компонентов image"s

Это рекорд, однозначно.



Страницы: 1 вся ветка

Текущий архив: 2010.08.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.005 c
2-1275807557
akosh12345
2010-06-06 10:59
2010.08.29
Прорисовка в ListView


2-1275900385
12
2010-06-07 12:46
2010.08.29
AV при Close у TForm


10-1167679059
TStas
2007-01-01 22:17
2010.08.29
Как получить код странички, загруженной в WebBrowser?


2-1275926869
akosh12345
2010-06-07 20:07
2010.08.29
Копирование с индикатором процесса


2-1275905953
stas
2010-06-07 14:19
2010.08.29
Гарантированно убить Thread