Быстрое перемещение растрового изображения по окну в C ++

StackOverflow https://stackoverflow.com/questions/1622117

  •  06-07-2019
  •  | 
  •  

Вопрос

Я ищу код C ++, который позволил бы мне быстро перемещать растровое изображение по окну, восстанавливая фон по мере его перемещения. В настоящее время я записываю содержимое окна в растровое изображение во время инициализации приложения, а в OnPaint () я рисую это растровое изображение, а затем рисую наложенное растровое изображение. Я дважды буферизую краску. Положение наложенного растрового изображения перемещается с помощью мыши, которая делает недействительным окно.

Это работает нормально, за исключением того, что оно слишком медленное, когда фоновое окно большое (например, рабочий стол Windows), а компьютер медленный. Я предполагаю, что перерисовка большого фонового растрового изображения при каждом движении мыши является узким местом. Должен быть намного лучший и быстрый способ сделать это, но мой поиск не нашел нужного мне ответа.

Это было полезно?

Решение

Вероятно, самым быстрым способом было бы сохранить ваше подвижное изображение в одном растровом изображении, а затем сохранить в памяти второе временное растровое изображение того же размера. Чтобы нарисовать ваше подвижное растровое изображение поверх вашего основного изображения, вы сначала должны использовать функцию API BitBlt, чтобы скопировать область, в которую вы собираетесь нарисовать подвижное растровое изображение, во временное растровое изображение, а затем BitBlt - ваше подвижное растровое изображение - в основное изображение. При перемещении подвижного растрового изображения вы должны: 1) BitBlt преобразовать временное растровое изображение в его исходное местоположение, затем 2) BitBlt переместить новое местоположение во временное растровое изображение, а затем 3) BitBlt переместить подвижное изображение в новое местоположение в основном растровом изображении.

Другие советы

Вам следует ознакомиться с списками изображений которые реализуют перетаскивая эффекты .

  

Win32 API включает функции для   перетаскивая изображение на экране.   функции перетаскивания переместить изображение   гладко, в цвете и без каких-либо   мигание курсора. Оба в масках   и немаскированные изображения можно перетаскивать.

Конечно, пользователю не нужно перетаскивать изображение. Вы делаете это, изменяя положение изображения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top