Si dibujo los objetos del juego con un timer, limpio y actualizo un drawingarea pero el efecto es que la imagen se mueve pero parpadea.
Para evitar esto se emplea una técnica llamada back buffering que consiste en dibujar los objetos en una imagen virtual y despues mostrarlos en la pantalla(DrawingArea).
El problema es que no me sale bien, me deja un rastro del movimiento de la imagen.
aquí como se hace http://www.frodrig.com/macedoniamagazine/epja2.htm
Y mi codigo:
PUBLIC SUB GDKDrawGameObjects2()
'Dibuja todos los objetos del almacenados en GDKMatObjects, en GDKMainDrawingArea
DIM n AS Integer
DIM Backbuffer AS NEW Picture
Backbuffer = GDKMainDrawingArea.Grab()
Draw.Begin(Backbuffer)
FOR n = 0 TO GDKMatObjects.Count - 1
Draw.Picture(GDKMatObjects[n].Image, GDKMatObjects[n].Left, GDKMatObjects[n].top, GDKMatObjects[n].Width, GDKMatObjects[n].Height)
NEXT
Draw.End()
GDKMainDrawingArea.clear
Draw.Begin(GDKMainDrawingArea)
Draw.Picture(Backbuffer, 0, 0)
Draw.End()
Backbuffer.Clear
END
'Dibuja todos los objetos del almacenados en GDKMatObjects, en GDKMainDrawingArea
DIM n AS Integer
DIM Backbuffer AS NEW Picture
Backbuffer = GDKMainDrawingArea.Grab()
Draw.Begin(Backbuffer)
FOR n = 0 TO GDKMatObjects.Count - 1
Draw.Picture(GDKMatObjects[n].Image, GDKMatObjects[n].Left, GDKMatObjects[n].top, GDKMatObjects[n].Width, GDKMatObjects[n].Height)
NEXT
Draw.End()
GDKMainDrawingArea.clear
Draw.Begin(GDKMainDrawingArea)
Draw.Picture(Backbuffer, 0, 0)
Draw.End()
Backbuffer.Clear
END
El resultado es este:
Si alguien me puede ayudar lo agradecería mucho.
Saludos!