Re[2]: Создание ListView
От: Visor2004  
Дата: 27.07.05 13:43
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Visor2004, Вы писали:


А>[skipped]


А>Посмотри внимательно описание метода Control.SetStyle() — должно помочь с буферизацией

А>А если очень хочеться что-то кэшировать, то попробуй кэшировать содержимое ячеек (в виде картинки или чего ещё, не важно). У себя дома я выжал А>из gdi+ в 1280х1024 около 15 кадров в секунду, при заполнении экрана квадратиками 32х32 на атлоне 2000+, такчто если ячейки будут в кэше, А>будет рисоваться быстро.

Буферизация — это конечно здорово, изображение не мерцает, но быстродействия оно не добавляет. А вот про кэширование элементов — это интересно. Я думал над этим. В голову пришла такая мысль: Можно попробовать посчитать сколько элементов будет видимо в рабочей области при максимальном размере контрола на данном разрешении, потом создать соответствующее количество битмапов и рисовать элементы на нем, а при изменении размера, когда положение элементов будет "тасоваться" просто забирать битмапы у элементов которые стали невилимыми и переназначать их видимым элементам (так же поступать и при скроллировании элемента).
Тут тогда у меня другой вопрос, как GDI+ отреагирует на создание 3000 битмапов? Не приведет-ли это к каким-нить негативным последствиям? Типа нехватки ресурсов или чего-то еще такого....
Если тебе не сложно, можешь исходник своего алгоритма дать на изучение, если не весь, то хоть ключевые моменты.
Помните!!! ваш говнокод кому-то предстоит разгребать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.