SoloCodigo

Programación General => Delphi => Mensaje iniciado por: Perrero en Miércoles 17 de Mayo de 2006, 04:15

Título: Que No Parpadee
Publicado por: Perrero en Miércoles 17 de Mayo de 2006, 04:15
Tengo una aplicacion en la cual se mueve una imagen, con la ayuda de un Timer, pero el problema es que cuando se va moviendo la imagen parpadea , como puedo hacer para que deje de parpadear?
Título: Re: Que No Parpadee
Publicado por: Enko en Miércoles 17 de Mayo de 2006, 17:24
Para que no parpadee deberias usar lo que seria "double buffering" pero en una Form.

Deberias tener un TBitmap con el tamaño de toda la Form.
Código: Text
  1.  
  2. var
  3.   Buffer: TBitmap;
  4. begin
  5.   Buffer := TBitMap.Create;
  6.   Buffer.Width := Form1.Width;
  7.   Buffer.Height := Form1.Height;
  8. end;
  9.  
  10.  
Luego,  por cada ciclo del timer:
Código: Text
  1.  
  2. //borrar el buffer
  3. Buffer.Canvas.FillRect(Rect(0,0, Buffer.Width, Buffer.Height));
  4. //dibujar la pelota en el canvas del buffer
  5. Buffer.Canvas.Draw(X,Y, Pelota);
  6. //volcar el buffer sobre la la Form comenzando en (0,0)
  7. //se puede comenzar en otra posicion
  8. Form1.Canvas.Draw(0,0, Buffer);
  9.  
  10.  

Si lo que etabas haciendo es mover un TPicture cambiando (X,Y), y tenes varias Botones, Edits  y otras cosas en la forma,  podrias probar con hacer el buffer del tamaño minimo necesario para que la imagen que se mueve quepe en el y el resto sigue siendo igual. (no te olvides de liberar el buffer: Buffer.Free).