![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Perdon por seguir insistiendo, pero finalmente decidi tratar de implementar el doble buffer porq me ayudaria en varias cosas.
Encontre en un articulo (http://delphi.about.com/library/bluc/text/uc052102g.htm) esta solucion : Código:
Bmp := TBitmap.Create;
try
Bmp.Width := ClientWidth;
Bmp.Height := ClientHeight;
// Draw lines onto the **bitmap's** canvas
for i := 0 to 20000 do
begin
Bmp.Canvas.MoveTo(Random(ClientWidth), Random(ClientHeight));
Bmp.Canvas.LineTo(Random(ClientWidth), Random(ClientHeight));
end;
Canvas.Draw(0,0, Bmp); // draw the bitmap to screen now
finally
Bmp.Free;
end;
Parece ser una buena solucion para dibujar todo de una y que no se vea como se va dibujando paso a paso. El problema que tengo es que uso un componente timer y cada vez que ejecuta llama a este codigo de manera que la imagen vuelve a parpadear. Active la propiedad Doublebuffer del form a true pero no cambia en nada el resultado, ya no se que hacer. Si alguien se da cuenta de mi error por favor digame como solucionarlo. Gracias |
|
#2
|
||||
|
||||
|
Bueno, la tecnica del Doble Buffer evita el parpadeo... no tendría por que fallarte.... a menos que el tiempo de tu ttimer fuera inferior al tiempo que tarda en dibujarse la figura... Por otro lado, activar la propiedad Doublebuffer del form es como redundar...
Practica aumentando el tiempo de tu ttimer, por ejemplo a 5 segundos, o mas (dependiendo de como lo tengas) y verifica si te sigue pasando... si no pasa quiere decir que el problema es con el ttimer.... Si sigue pasando entonces el problema está en algo de la logica de tu codigo.... |
|
#3
|
|||
|
|||
|
Cita:
|
|
#4
|
||||
|
||||
|
|
#5
|
|||
|
|||
|
Muy chulo
![]() pero si la form tuviese algun componente y no solo un bitmap que se pintase todo en ella...con el doublebuffered de la form se evitaria flickering al pintar todo de un mismo golpe no? me refiero...es redundante o no el uso de doublebuffered en todos los componentes con posible retardo a pintar? Bueno, para el caso, mas o menos lo mismo.Última edición por coso fecha: 07-10-2008 a las 19:36:10. |
|
#6
|
||||
|
||||
|
A que te refieres coso? pues el ejemplo funciona con N componentes "encima" sin ningun efecto "flickering"
![]() PD; al utilizar la propiedad DoubleBuffered perteneciente a TWinControl se crea en cada proceso de repintado, un nuevo canvas y bitmap internamente y se hace uso de una llamada recursiva a WMPaint con lo que en procesos complejos con GDI se nota una carga extra al procesador. Tambien me parece que seria un "juego" algo "feo" si tuviese un TButton al centro del formulario (por ejemplo). Saludos |
|
#7
|
|||
|
|||
|
no no tu ejemplo perfecto, pero si el bitmap no se copiase a toda la form, entonces todo el resto (si estuviese doublebuffered a false) se dibujaria directamente a pantalla no? entonces, vamos, para una form con un dibujo mejor crear un unico bitmap de toda la form (esto es doublebuffered a true de la form). Me refiero, q si TBitmap esta con dblbuffer y la form no, el trozo de form visible se dibujaria directamente a pantalla mientras q de TBitmap se haria el dibujo a memoria y luego volcado, o sea, dos pasos, mientras q si la form esta a doublebuffer solo se haria un unico bitmap total en memoria de todo lo que se tiene q mostrar y luego, volcado (espero haberme explicado, aqui es tarde
). Venga saludos. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Dibujando líneas en Canvas | JAV | Gráficos | 1 | 27-09-2007 15:56:05 |
| Dibujando en un TListView | pepon386 | Gráficos | 1 | 20-01-2006 09:36:28 |
| Dibujando en capas | blueicaro | Gráficos | 1 | 26-04-2005 09:46:02 |
| Canvas does not allow drawing | MADV01 | Impresión | 1 | 02-04-2004 15:08:43 |
| Canvas???? | craven | Gráficos | 2 | 17-05-2003 13:26:02 |
|