Pregunta

Estoy buscando un código C ++ que me permita mover rápidamente un mapa de bits alrededor de una ventana, restaurando el fondo a medida que se mueve. Actualmente capturo el contenido de la ventana en un mapa de bits durante la inicialización de la aplicación y en OnPaint () dibujo este mapa de bits y luego dibujo mi mapa de bits superpuesto. Estoy doblemente amortiguando la pintura. La posición del mapa de bits superpuesta se mueve con el mouse, lo que invalida la ventana.

Esto funciona bien, excepto que es demasiado lento cuando la ventana de fondo es grande (piense en el escritorio de Windows) y la PC es lenta. Supongo que volver a dibujar el mapa de bits de fondo grande en cada movimiento del mouse es el cuello de botella. Tiene que haber una manera mucho mejor y más rápida de hacer esto, pero mi búsqueda no ha encontrado la respuesta que necesito.

¿Fue útil?

Solución

Probablemente su forma más rápida sería almacenar su imagen móvil en un mapa de bits y luego mantener un segundo mapa de bits temporal del mismo tamaño en la memoria también. Para dibujar su mapa de bits móvil sobre su imagen principal, primero debe usar la función API de BitBlt para copiar la región en la que va a dibujar el mapa de bits móvil en su mapa de bits temporal, luego BitBlt su mapa de bits móvil en su imagen principal. A medida que mueve el mapa de bits móvil, entonces 1) BitBlt el mapa de bits temporal en su ubicación original, luego 2) BitBlt la nueva ubicación en el mapa de bits temporal, y luego 3) BitBlt la imagen móvil en la nueva ubicación en el mapa de bits principal.

Otros consejos

Debería consultar Listas de imágenes que implementan arrastrando efectos .

  

La API de Win32 incluye funciones para   arrastrando una imagen en la pantalla. los   funciones de arrastre mover una imagen   suavemente, en color y sin ningún tipo de   parpadeo del cursor. Ambos enmascarados   y las imágenes sin máscara se pueden arrastrar.

Por supuesto, el usuario no tiene que arrastrar la imagen. Usted lo hace cambiando la posición de la imagen.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top