![]() |
|
Модераторы: Snowy, Alexeis, MetalFan |
![]()
|
|
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Всем привет.
Использую GDI+(GDI+ API). Загружаю большую Bitmap`ку (примерно 5000 на 5000). Отображаю ее на PaintBox, который в свою очередь лежит на ScrollBox`e. Изображение скроллируется нормально. Затем инвертирую эту Bitmap`ку и при скролле возникают жуткие тормоза. Не могу понять, в чем тут дело. Тестовый проект прикрепляю(за исключением Bitmap`ки ) Присоединённый файл ( Кол-во скачиваний: 10 )
test_graph.rar 3,02 Kb |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
5000 * 5000 * 3 = 72 Мб !!! Представь себе сколько займет отрисовка такой картинки! Ведь PiantBox не подозревает, что его область вывода небольшая и пытается все рисовать. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Alexeis, ест-но в своем проекте я отрисовку делаю подругому
Но эффект, который я описал, возникает независимо от способа отрисовки. |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Товарищи, может хоть у кого-нибудь есть хоть какие-нибудь предположения?
Рассмотрю все варианты! |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
Засекай время, и определяй какие методы выполняются дольше всего -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
А если нарисовать всего 1 пиксель? Тоже будет тормозить? -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Сейчас проверю...
Добавлено через 2 минуты и 18 секунд да, эффект тот же |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 55 Всего: 459 |
В текущем примере я вижу что рисуется вся битмапка
А не только видимый фрагмент. После такого рисования возможно GPBitmap превращается в Dib секцию, а она уже рисуется по другому, возможно не так эффективно как обычны битмап. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
где HScroll.Position - горизонатльный скролл VScroll.Position - вертикальный скролл pbx - PaintBox но почему же если с картинкой не производить никаких действий отрисовка происходит на ура! стоит только вызвать LockBits&UnlockBits и все! при скролле проц на 100% и память жрется как бешенная. вот в чем вопрос... Добавлено через 8 минут и 17 секунд По поводу прикрепленного примера: там у PaintBox align = alClient, а для кода, приведенного выше align = alNone. Это я на всякий случай, чтобы не было недоразумений. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 5 Всего: 128 |
попробуй "скэшировать" обработанный TGPBitmap в TGPCachedBitmap. он должен быстрее рисоваться
-------------------- There are always someone smarter than you... |
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
К сожалению TGPCachedBitmap не поможет, т.к. мне надо отрисовывать только видимую часть картинки, а с TGPCachedBitmap этого сделать нельзя.
|
|||
|
||||
| VICTAR |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1108 Регистрация: 6.10.2006 Репутация: 2 Всего: 80 |
Отказался от использования GDI+.
Удалось добиться нужного результат с помощью GDI. |
|||
|
||||
![]()
|
| Правила форума "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. |