Создание ListView
От: Visor2004  
Дата: 27.07.05 12:47
Оценка:
Привет всем. Решил написать свой ListView, потому что стандартный задолбал своими глюками при нестандартной отрисовке, а в .NET для того чтобы написать свою отрисовку для ListView надо WndProc переопределять (кроме того тут присутствует чисто спортивный инетерес это сделать). Решил ваять на C# под .NET 1.1. Все отлично кроме ситуации когда за раз надо отрисовать много элементов, напирмер, в разрешении 1600x1200 если развернуть окно на весь экран, то в рабочую область помещаеться около 3000 элементов и процесс перерисовки жутко тормозит. Пробовал оптимизировать: Рисовать все на Bitmap, а потом в OnPaint копировать с него в окно, а на битмапе все перерисовывать при изменении самих элементов. Это кноечно помогло, но не решило проблему полностью, при изменении размеров контрола, меняеться порядок элементов, размещенных в рабочей области и соответственно в OnResize надо перерисовать bitmap, а потом перенести его еще на контрол, и тормоза снова появляються, причем еще большие, так как в этом случае имеет место копирование достаточно большого битмапа ( разрешение близкое к 1600х1200 ).
Как сделать его по человечески ума не приложу, но как — то можно ибо виндовый компонент нормально справляеться с такой ситуацией.
Пробовал сделать его на WinAPI с использованием голого C++ и результат получился конечно немного пошустрее, но не настолько, чтобы решить проблему, тут надо именно алгоритмически ее решать.
Помните!!! ваш говнокод кому-то предстоит разгребать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.