DrawingArea Deja De Funcionar Despues De Clear


Objetivo: DrawingArea Deja De Funcionar Despues De Clear
Hola a todos!
Tengo un DrawingArea en el que quiero que al pulsar un boton, se dibuje una imagen y que si lo vuelvo a pulsar se dibuje la imagen un poco mas a la derecha.

Dibujar()
DrawingArea.clear
nave.left = nave.left + 20
Draw.Begin(nDrawingArea)
Draw.Picture(nave.Image, nave.left, nave.top)
Draw.End()
End


El problema viene en que si no pongo .clear la imagen "se mueve" pero deja el rastro de haberla dibujado anteriormente
Y si pongo el clear, al darle la segunda vez ya no dibuja nada.
He probado usando cached= true y con false y nada.
¿Alguna Idea?
La idea es que una nave se mueva por la pantalla.

Gracias

Perfil MP  
BrunoIV
Objetivo: Re: DrawingArea Deja De Funcionar Despues De Clear
¿La nave es una imagen? (jpg por ejemplo)

PictureBox1.Move(PictureBox1.X + 5, PictureBox1.Y+5)

Objetivo: Re:[Solucionado] DrawingArea Deja De Funcionar Despues De Clear
Ya lo solucioné.
Era por culpa de cached que lo puse a false 2 veces...

Perfil MP  
Objetivo: Re: DrawingArea Deja De Funcionar Despues De Clear
@Bruno: No, eso no vale en este caso, porque él está dibujando dentro de un DrawingArea.

@Juan Luis, no nos cuentas si usas gambas 2 o gambas 3, porque hay alguna diferencia entre ambos...

En todo caso te aconsejo que hagas uso del evento _Draw() del drawingarea (en ese caso la propiedad Cached=False) y llames a las funciones de dibujo desde dentro de ese evento.

Para que lo entiendas este sería tu código adaptado:

Public Sub Dibujar_Click() ' este sería el botón
nave.left = nave.left + 20
nDrawingArea.Refresh
End

Public Sub nDrawingArea_Draw() ' evento que de dispara siempre que sea necesario
Draw.Picture(nave.Image, nave.left, nave.top)
End


Bien, aquí el concepto es diferente. El evento Draw sencillamente se dispara cada vez que se necesita, por ejemplo al tapar y destapar el Form, al moverlo, redimensionarlo, etc y también lo podemos refrescar nosotros explícitamente. Te habrás dado cuenta de que no hace falta poner en .Begin(parent) ni .End,

Ahora sólo es cuestión de aplicar la lógica para animar los objetos que dibujes, o superponerlos o lo que se te ocurra.

Para ilustrarlo un poco más puedes ver este fragmento de código donde se dibuja una escala numérica de frecuencias de radio y se puede mover con el ratón:

http://www.assembla.com/code/dfhlog.../FBandMap.class
bandmap



Saludos

Perfil MP  

Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4076s (PHP: -80% SQL: 180%)
Consultas SQL: 45 - Debug off - GZIP Activado