![]() |
Модераторы: Snowy, Alexeis, MetalFan |
![]() ![]() ![]() |
|
SultanOFF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
Здравствуйте. Есть ли такой компонент с помощью которого можно было бы реализовать галерею картинок? Или кто посоветует как это можно сделать?
![]() |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Да сколько угодно... Тока вот если у тебя в галереи 10000 картинок, то это как то не очень хорошо скажется на производительности... Лучше сделать фиксированное количество имеджей и при скроллинге подгружать в них картинки... Я реализовывал через ListView и прям на его канве при надобности отрисовывал то что надо при помощи GDI+... Получилось быстро, красиво и маштабируемо... |
|||
|
||||
SultanOFF |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
о вот Мне тоже нужно чтобы масштабировалось! ![]()
это как? Можно подробней? или что было бы вовсе прекрасно примером? ![]() |
||||
|
|||||
~FoX~ |
|
||||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Ну идея такова...
На форму бросаем ImageList и ListView...Связываем их Дальше ищем файлы и заполняем список путей...
Дальше я создавал пустой список в ЛистеВьюве:
Дальше немного сложнее, т.к. я писал это все на GDI+
В общем то за счет использования GDI+ код довольно шустро работает даже на нескольких сотнях файлов, к тому же он адекватно переваривает *.bmp, *.dib, *.jpeg/*.jpg, *.emf, *.wmf, *.gif, *.tif/tiff, *.png, *.ico (*) Вот этот код надо вынести в OnAdvancedCustomDrawItem и подгружать только те картинки которые в данный момент на экране...Откровенно говоря я просто не нашел последний вариант... З.Ы.: Я не стал выносить код в отдельный поток, ради сохранения производительности. Хотя конечно в потоке это было бы правильней. З.З.Ы.: Если использовать код как есть, то есть минусы: - Во время формирования есть артифакты в виде подрагивания - Приходиться отслеживать смену дирректории в рантайме Но есть и плюсы: - После формирования, скроллинг проходит без артифактов - Есть возможность создавать картинки любого размера В аттаче скрин с проекта Это сообщение отредактировал(а) ~FoX~ - 22.11.2009, 21:10 Присоединённый файл ( Кол-во скачиваний: 90 ) ![]() |
||||||
|
|||||||
SultanOFF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
спасибо большое за столь обширный ответ
![]() почему пишется что переменная GetDirNameFromPath не обьявленна? А также переменные GetProportional, TumbnailsList? GDI+ подключил... ПС: не могли бы Вы выложить исходник вашей программы? ![]() Это сообщение отредактировал(а) SultanOFF - 23.11.2009, 15:10 |
|||
|
||||
~FoX~ |
|
||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
SultanOFF, GetDirNameFromPath функция возвращает имя файла из пути, писал сам потому что нужно было по хитрому это делать, ты используй ExtractFileName...
TumbnailsList - твой ImageList1 А про GetProportional я забыл...
Боль-мение адекватные исходники давно потеряны, а в том что есть придется пол года разбираться )))) А, еще забыл..ViewStyle выстави в vsIcon и в ImageList Width и Height в 130 З.Ы.: Если ооочень надо - могу накатать рабочий пример на Д7 или 2k9, но т.к. сильно лениво для начала попробуй сам ![]() Это сообщение отредактировал(а) ~FoX~ - 23.11.2009, 16:02 |
||||
|
|||||
SultanOFF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
еще раз большая благодарность
![]() ![]() |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
SultanOFF, Иееех....молодежжж
![]() ![]() ![]()
Это сообщение отредактировал(а) ~FoX~ - 23.11.2009, 17:19 |
|||
|
||||
SultanOFF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
![]() Кстати почему то вылетает ошибка указывая на => TumbPath.Add(s); :( на скрине сама ошибка Это сообщение отредактировал(а) SultanOFF - 23.11.2009, 17:37 Присоединённый файл ( Кол-во скачиваний: 66 ) ![]() |
|||
|
||||
~FoX~ |
|
||||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Иеееххх....
Ты лист то создай перед использованием.... ![]()
Фигня..."Мы все учились понемногу" ![]() Это сообщение отредактировал(а) ~FoX~ - 24.11.2009, 09:39 |
||||
|
|||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Кстати, не забывай очищать лист во время работы
Это сообщение отредактировал(а) ~FoX~ - 24.11.2009, 10:17 |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
Собственно утро, на работе делать не чего....
Вот тебе рабочий пример в аттаче... Исходники + екзешник, писано на Д7... Присоединённый файл ( Кол-во скачиваний: 154 ) ![]() |
|||
|
||||
SultanOFF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
Громаднейшее спасибо уважаемый FOX!
![]() ![]() |
|||
|
||||
~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 2 Всего: 68 |
SultanOFF, Ну если что обращайся, я много с графикой работал...
|
|||
|
||||
SultanOFF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 108 Регистрация: 23.3.2008 Репутация: нет Всего: нет |
а можешь сказать как сделать чтобы при нажатии на картинку открывался большой скриншот?
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Звук, графика и видео" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |