Страница: 1 |
Страница: 1 |
Вопрос: PhotoGrid
Добавлено: 05.04.10 20:40
Автор вопроса: SSTREGG
Есть задание, создать контрол на подобии этого:
http://s003.radikal.ru/i204/1004/f7/89258158beb7.png
Так вот есть пару вопросов по реализации:
1) Как лучше отрисовывать? (рисовать на bitmap и потом отображать его; отрисовывать динамически; другой вариант)
2) Как можно увеличить скорость загрузки изображения с жесткого диска? Image.FromFile - жутко тормозит, и при этом хавает память раза в 4(5) больше чем размер изображения (файлов может быть от 100 до 500).
Какие будут варианты =)?
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
VβÐUηìt
Вопросов: 246
Ответов: 3333
Web-сайт:
Профиль | | #1
Добавлено: 05.04.10 21:15
1) Рисуешь всю васю на битмапе шириной с контрол высотой во все изображения. При этом, OnPaint просто выводит нужную область этого битмапа-буфера в зависимости от значения ScrollBar. Во время загрузки формы ты рисуешь этот битмап-буфер без эскизов картинок, просто с подписями.
2) Запускаешь отдельный поток, который в List<Bitmap> добавляет с помощью Image.FromFile последовательно все имейджи с диска. При каждой новой загрузке одновременно с добавлением в List прорисовывай эскиз на битмапе-буфере в нужном месте, и вызвать Refresh у своего контрола, если обновленный только что эскиз находится в области видимости - чтобы моргало меньше.
Смекаешь?
Номер ответа: 2
Автор ответа:
SSTREGG
Вопросов: 3
Ответов: 64
Профиль | | #2
Добавлено: 05.04.10 21:20
спасибо, вариант ясен.
Номер ответа: 3
Автор ответа:
UnDeAdZak
Вопросов: 80
Ответов: 476
Профиль | | #3
Добавлено: 06.04.10 01:39
Мда на днях занимался совершенно темже.в итоге плюнул, и просто добавил на форму заместо этого понта обычный FileListBox