Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Visor2004, Вы писали:
А>[skipped]
А>Посмотри внимательно описание метода Control.SetStyle() — должно помочь с буферизацией А>А если очень хочеться что-то кэшировать, то попробуй кэшировать содержимое ячеек (в виде картинки или чего ещё, не важно). У себя дома я выжал А>из gdi+ в 1280х1024 около 15 кадров в секунду, при заполнении экрана квадратиками 32х32 на атлоне 2000+, такчто если ячейки будут в кэше, А>будет рисоваться быстро.
Буферизация — это конечно здорово, изображение не мерцает, но быстродействия оно не добавляет. А вот про кэширование элементов — это интересно. Я думал над этим. В голову пришла такая мысль: Можно попробовать посчитать сколько элементов будет видимо в рабочей области при максимальном размере контрола на данном разрешении, потом создать соответствующее количество битмапов и рисовать элементы на нем, а при изменении размера, когда положение элементов будет "тасоваться" просто забирать битмапы у элементов которые стали невилимыми и переназначать их видимым элементам (так же поступать и при скроллировании элемента).
Тут тогда у меня другой вопрос, как GDI+ отреагирует на создание 3000 битмапов? Не приведет-ли это к каким-нить негативным последствиям? Типа нехватки ресурсов или чего-то еще такого....
Если тебе не сложно, можешь исходник своего алгоритма дать на изучение, если не весь, то хоть ключевые моменты.