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