Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-01-2004
carloscampoy carloscampoy is offline
No confirmado
 
Registrado: oct 2003
Posts: 17
Poder: 0
carloscampoy Va por buen camino
Question Evitar parpadeos

Hola a todos los delphiadores del foro.
Bueno, pues la cosa es que estoy haciendo un componente que trabaja con imagenes en movimiento (Sprites). Para evitar los parpadeos que suelen ocurrir cuando pintamos repetidamente sobre un canvas, he puesto un bitmap oculto, entonces pinto sobre este bitmap (TBitmap) y una vez pintado vuelco la imagen sobre el canvas. La cosa es que no funciona, la imagen sigue parpadeando. ¿alguien save porque?

Muchas gracias a todos.
Responder Con Cita
  #2  
Antiguo 02-01-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si el componente que estás creando desciende de la clase TwinControl, lee esta ayuda de Delphi:
Cita:
Determines whether the control’s image is rendered directly to the window or painted to an in-memory bitmap first.

property DoubleBuffered: Boolean;

Description

When DoubleBuffered is False, the windowed control paints itself directly to the window. When DoubleBuffered is True, the windowed control paints itself to an in-memory bitmap that is then used to paint the window. Double buffering reduces the amount of flicker when the control repaints, but is more memory intensive.

When a windowed control is a dock site and has an associated dock manager, it must be double-buffered.
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 06-01-2004
carloscampoy carloscampoy is offline
No confirmado
 
Registrado: oct 2003
Posts: 17
Poder: 0
carloscampoy Va por buen camino
Muchas gracias por responder marcoszorrilla.
Ya he encontrado (de rebote) la solución a mi problema, y la erdad es que era muy fácil, aunque no tengo ni idea de porque funciona. Si alguien puede explicarmelo se lo agradezco.

Mi componente desciende de TGraphicControl y tenia un bitmap en el cual yo pitaba para despues bolcarlo en el canvas del componente. Mirando los componentes de Delphi, he visto que los que descienden de TGraphicControl tienen el estilo csOpaque y yo se lo puse al mio y... Ningun parpadeo!!!! Increible!!!!

Si alguien save que hace el estilo csOpaque le agradeceria que me lo explique. Muchas gracias.
Responder Con Cita
  #4  
Antiguo 08-01-2004
Gydba Gydba is offline
Miembro
 
Registrado: ene 2004
Ubicación: Argentina
Posts: 673
Poder: 21
Gydba Va por buen camino
Tengo entendido que si la propiedad ControlStyle por defecto provoca el evento WM_PAINT para repintar primero el fondo del canvas antes de dibujar el sprite, lo que generaría el parpadeo.
Lo mas eficiente sería utilizar un area de buffer cuando se manejan sprites, pero eso depende de la conveniencia de cada uno.
__________________
Suerte
.: Gydba :.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 17:10:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi