• Jueves 14 de Noviembre de 2024, 16:45

Autor Tema:  Que No Parpadee  (Leído 1132 veces)

Perrero

  • Miembro MUY activo
  • ***
  • Mensajes: 209
    • Ver Perfil
Que No Parpadee
« en: Miércoles 17 de Mayo de 2006, 04:15 »
0
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?

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Que No Parpadee
« Respuesta #1 en: Miércoles 17 de Mayo de 2006, 17:24 »
0
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).