Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 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;)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам