Animaciones extremadamente lentas (parpadeo en le repintado)

27/01/2005 - 20:04 por Zephryn Xirdal | Informe spam
Hola.

Estoy haciendo un pequeño juego que me anima pequeñas imágenes dentro de la
ventana de la aplicación. He colocado un panel y es ahí, dentro de su
superficie, donde dibujo directamente.

Para ello, cargo un fichero png mediante un Bitmap que contiene las
secuencias de la animación. Luego, mediante un timer, voy invalidando el
área cliente del panel, de modo que en el método OnPaint dibujo el
fotograma. Tengo que pintar 100 objetos cada vez, por lo que en OnPaint
entro en un bucle, y mediante una llamada a DrawImage voy pintando la
animación:

Rectangle r=new Rectangle(frame*40,y*40,40,04);
e.DrawImage(mibitmap,x*40,y*40,r,GraphicsUnit.Pixel);

Como podréis comprobar, cada imagen de la animación tiene 40x40, y en el
mapa de bits están todas las imágenes.

El problema viene que el repintado es extremadamente lento, en el sentido
que toda la pantalla parpadea como una condenada; podría componer el bitmap
y luego sacarlo en lugar de ir pintándolo, o utilizar un buffer doble, o
quizás algún otro método que no se me ha pasado por la cabeza.

¿Me puede decir alguien el método correcto para hacerlo?

Gracias de antemano.


Aplícate tu propio bálsamo. Proclama por doquier tu enfermedad. Eso te
restablecerá. Cuanto más emplees este tratamiento más digno y más sabio te
harás.
**** Powered by zxFortunes: http://sourceforge.net/projects/zxfortune
 

Leer las respuestas

#1 Rodrigo Corral [MVP]
27/01/2005 - 22:41 | Informe spam
Debes usar tecnicas de doble buffer

Este articulo en castellano esta bien, es para VB pero no deberia se dificil
portalo a c#
http://www.elguille.info/colabora/p...rafico.htm

Este esta en C# y en ingles...
http://www.thecodeproject.com/cs/me...rawing.asp


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org

Preguntas similares