![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Cita:
Si por el contrario, no dispones de esa propiedad por tratarse de una versión antigua de delphi no te quedara mas remedio que crear tu internamente un buffer y manejar todos los gráficos tu mismo por código. Aunque no se si te compensara tanto trabajo. |
#2
|
||||
|
||||
Gracias Domingo !
Qué rapidez ! ![]() Por cierto, nuestro estimado compañero David en su momento me permitió crear mi avatar con la versión de Delphi y la base de datos que utilizo, ... y en ella se vé que estoy utilizando Delphi 9 ![]() Con el DobleBuffered := True funciona bien el 'no' refresco del TImage de fondo, aunque se refresca al final del todo y aun se nota el 'flickeo'. Lo que pasa es que en el caso de poner la propiedad DobleBuffered a verdadero, no me muestra el movimiento del icono que estoy moviendo, con lo cual el efecto tampoco es el deseado, porque hasta que no dejo de mover el ratón, no se muestra la posición en la que he dejado el icono. Por lo tanto, no me sirve esta opción. Lo raro, y es por lo que inicié este hilo, es que con cualquier otro form creado como MDIChild, que es mi caso, al moverlo no me produce el dichoso parpadeo, pero con un icono posicionado (y moviéndolo) sobre el mismo form principal, si que se me dá el parpadeo. ![]()
__________________
Piensa siempre en positivo ! |
#3
|
||||
|
||||
A lo mejor lo que esta "fallando" es el código que utilizas para mover el icono. Si pudieras poner un poco de código, le echábamos un vistazo.
|
#4
|
||||
|
||||
El icono, y dos labels asociados, los muevo con los eventos OnMouseDown, OnMouseMove y OnMouseUp :
El TImage tiene cargada una imagen JPG, y la propiedad Strech := True, con el TImagen ocupando todo el fondo del form MDIForm principal, con la propiedad Align := alClient;
__________________
Piensa siempre en positivo ! |
#5
|
||||
|
||||
Yo para hacer esto, suelo emplear un código parecido, aunque uso solo un evento. Por ejemplo, aquí tengo una imagen que ocupa todo el formulario (Streach:= TRUE; Align:= alClient; ) y otra mas pequeña que es la que muevo. En el evento OnMouseMove de esta última coloco los siguiente:
Siendo AnteriroP una variable declarada de la siguiente manera:
Este ejemplo, una vez coloca la propiedad DoubleBuffered a TRUE no muestra ningún tipo de parpadeo, y la imagen 2 se puede mover perfectamente. |
#6
|
||||
|
||||
![]() Pues estimado amigo Domingo, ... me sigue sin funcionar como yo pretendo. Es correcto que tal y como indicaba antes, mientras estoy moviendo el cursor, la imagen no se actualiza, y por lo tanto no parpadea. Pero es que en mi caso, con Delphi 2006 al menos, tampoco me va mostrando el movimiento 'de arrastre' del icono que estoy moviendo. Por lo que hasta que no para el ratón, no me muestra el icono en la posición actual del ratón, y en ese momento también me vuelve a repintar la imagen de fondo.
Si muevo el ratón muy despacio, algo así como dudando donde voy a situar el icono, cada vez que para el movimiento del ratón, me redibuja el icono en esa posición, y también como decia arriba, la imagen de fondo. Lo que sigue provocando el molesto parpadeo al mover el ratón muy despacio. Además, con el DoubleBuffered a True, entiendo que la imagen se carga en memoria, y el consumo de la misma aumenta. Con una imágen pequeña entiendo no haya problema, pero con una imagen grande, en buena resolución, como fondo de pantalla, el consumo de memoria puede ser considerable. En el caso concreto que estoy probando, la imagen ocupa entre 300 y 500K, y es en concreto un fondo de Windows Vista que he cogido de aqui, que por cierto me parecen bastante bonitos y espectaculares algunos. ![]() http://www.flickr.com/photos/brajesh...7594389648659/
__________________
Piensa siempre en positivo ! |
#7
|
||||
|
||||
Pues es verdad, no estaba teniendo en cuenta que tu form es un fsMDIForm. En ese caso aparecen todos esos efectos que mencionas, que no aparecen cuando el formulario es normal. A lo mejor alguien con mas experiencia en ese tipo de formularios te puede explicar ese comportamiento tan extraño.
En cuanto a la propiedad DoubleBuffered. Lo único que hace es que el formulario a la hora de dibujarse, no lo haga cada objeto directamente, si no que se dibujan en un buffer intermedio y luego este se dibuja de una sola vez en la pantalla. No queda nada a mayores cargado en memoria, si es eso lo que te preocupaba. |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Color de fondo de un TImage | Drake | OOP | 1 | 03-08-2006 19:36:36 |
Omagen de fondo Form MDI | silviodp | OOP | 1 | 24-12-2004 12:05:45 |
Como evitar que el usuario cierre la form! | Waldo | API de Windows | 2 | 20-11-2003 18:46:47 |
Como mover un Timage por la form | Dantael | Gráficos | 1 | 17-11-2003 07:46:56 |
Imagen de Fondo en form | lafirma | OOP | 1 | 28-08-2003 18:59:41 |
![]() |
|