|
0 / 0 / 1
Регистрация: 30.01.2014
Сообщений: 15
|
||||||||||||||||
Низкая скорость копирования изображения вызовом функции bitblt30.01.2014, 11:14. Показов 1377. Ответов 1
Метки нет (Все метки)
Привет.
Имеется набор иерархически упорядоченных классов - графических объектов, например объект-контейнер-примитив-кнопка, либо объект-контейнер-примитив-окно. Для каждого из классов реализован метод отрисовки OnPaint(CDC* pDC, CRect &rcPaint). Экземпляры данных классов представляют собой отображаемые в окне графические объекты. Окно, которое также является экземпляром одного из таких классов, является контейнером объектов, отображаемых в нем. Имеется также класс - обработчик сообщения WM_PAINT, в рамах выполнения которого осуществляется вызов метода OnPaint экземпляра класса, для которого необходимо осуществить отрисовку. Поскольку каждый экземпляр класса является контейнером, в рамках выполнения метода OnPaint осуществляется вызов методов OnPaint для экземпляров классов, помещенных в данный контейнер (например, окно является контейнером кнопки, соответственно в рамках выполнения метода OnPaint для окна осуществляется вызов метода OnPaint для кнопки). В рамках выполнения обработчика сообщения WM_PAINT осуществляется создание фоновой канвы, передаваемой в качестве параметра вызова метода OnPaint, с целью избежания мерцания и т.д. (в-общем, стандартные действия). Именно на эту фоновую канву осуществляется отрисовка изображений всех экземпляров описанных выше классов. Происходит это примерно так.
Отрисовка, как уже было описано выше, осуществляется на фоновой канве l_dcCompatible. По завершении отрисовки осуществляется копирование изображения обратно на исходную канву. Для размера 480*282 время выполнения обратной отрисовки составляет около 0.3 мс (AMD Athlon II X3 460 3.2 Ггц, 3 Гб ОЗУ). Теперь о проблеме Класс окна при определенных условиях в рамах выполнения метода отрисовки хочет записать в переданную ему канву полноэкранное изображение, заранее нарисованное на другой канве. Ниже примерно описан процесс ее подготовки
Это уже меня не устраивает, т.к. исполняемый модуль предназначен для функционирования в среде wince на мобильном устройстве; время выполнения аналогичных участков кода по сравнению с настольным компютером указанной конфигурации возрастает примерно в 50 раз. Собственно, два вопроса. Почему имеет место такое значительно возрастание времени выполнения, хотя во втором случае копирование осуществляется с одной созданной в оперативной памяти канвы на другую и по большому счету должно быть еще быстрее чем копирование на канву, непосредственно связанную с участком дисплея? Можно ли как-то этого избежать?. Заранее спасибо. Добавлено через 49 минут Допустил ошибку в описании. Время выполнения составляет 0.03 мс для первого случая и 0.4 мс для второго. Так или иначе, десятикратное возрастание времени выполнения копирования изображения имеет место быть.
0
|
||||||||||||||||
| 30.01.2014, 11:14 | |
|
Ответы с готовыми решениями:
1
Не нормально низкая скорость копирования Низкая скорость копирования на сетевой диск Низкая скорость копирования между локальными дисками |
|
0 / 0 / 1
Регистрация: 30.01.2014
Сообщений: 15
|
|
| 01.02.2014, 14:55 [ТС] | |
|
Привет.
Всем спасибо, кто попытался помочь. Я вроде разобрался. Дело было в том, что метод CreateCompatible создавал канву вовсе не с device-dependent bitmap, а с device-independent. Соответственно, метод bitblt осуществлял копирование изображения из DIB в DDB, что, как известно, занимает гораздо больше времени, чем копирование изображения с одного совместимого холста на другой. Собственно, из текста вопроса это никак нельзя было понять.
0
|
|
| 01.02.2014, 14:55 | |
|
Помогаю со студенческими работами здесь
2
Низкая скорость копирования файлов на сервер. Предложите решение Непонятно что с новым диском: низкая скорость копирования файлов Intel D510MO низкая скорость копирования с расшаренного жесткого диска usb
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|