![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#2
|
|||
|
|||
|
"Delphianos" no Delphinos, Delfinos o elfos está mejor
.Para borrar el gráfico anterior y evitar parpadear: 1.- Trabaja todo creando un Tbitmap "Mibitmap" que también tiene un Tcanvas. El bitmap debe tener la propiedad HandleType:=bmDIB (Independiente de dispositivo por lo tanto de resolución actual de pantalla) y los bits por pixel en la profundidad que más te paresca. 2.- Para mostrar en pantalla usa un TpaintBox y en su onpaint haz un bitblt(.....,SRCCOPY) del Mibitmap.canvas.handle para hacerlo un poco más rápido. BOOL BitBlt( HDC hdcDest, // handle of destination device context int nXDest, // x-coordinate of destination rectangle's upper-left corner int nYDest, // x-coordinate of destination rectangle's upper-left corner int nWidth, // width of destination rectangle int nHeight, // height of destination rectangle HDC hdcSrc, // handle of source device context int nXSrc, // x-coordinate of source rectangle's upper-left corner int nYSrc, // y-coordinate of source rectangle's upper-left corner DWORD dwRop // raster operation code ); 3.- En lugar de borrar simplemente haz un bitblt con la última opcion en blackness, whiteness o patcopy para usar el Tbrush (con esto "limpias" el bitmap en memoria) y luego vuelve a dibujar todos los objetos gráficos no borrados. Para optimizar puedes hacer esto: Para cada gráfico definir un rectángulo que lo contenga. Así que cuando tengas que actualizar una parte de tu bitmap Preparas el pedazo que tiene que actualizarse primero limpiando esa parte (poniendo todo en blanco por ejemplo) y luego dibujando en esa parte sólo los gráficos cuyos rectángulos se intersectan con la figura que fue borrada. |
|
|
|