![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Creo que en parte puede ser problema de que el fondo de la imagen no es uniforme.
Prueba con esta imagen y esta línea:
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#2
|
|||
|
|||
|
Ok, en este momento no tengo Delphi lo revisaré en casa, pero que hay con:
Cita:
en la opción 2? |
|
#3
|
||||
|
||||
|
Respuesta 1
El efecto se produce porque al dibujar una imagen lo haces sobre la anterior, y las partes transparentes dejan ver los restos de la anterior, de esta manera al ir moviendo la imagen los restos de las imágenes anteriores terminan llenando toda la parte izquierda de la imagen. Respuesta 2 La función Bitblt es una api que copia un bloque de pixeles de un Device Context a otro, le trae sin cuidado las propiedades del objeto TBitmap. Por eso no hace caso de la propiedad Transparent. Posible solución: La solución pasa por usar el método Draw y borrar los restos de la imagen anterior antes de dibujar la actual, además de usar un buffer para evitar el parpadeo. Nos quedaría algo así en el evento del timer:
|
|
#4
|
|||
|
|||
|
He aplicado la nueva imagen de Neftali, su código, y el BitBtl ahora si trabaja bien con el transparente.
Y tal como mencioné un post anterior: Con el Draw (y esta nueva imagen inclusive) no pasa nada, ahora me pareciera que recorriera un "Cometa" al dibujar, inclusive he intentado con DoubleBuffered:=true; y nada Estoy en un Cafe Internet en este momento y voy leyendo el Post de Seoane (no tengo Delphi a mano), me parece algo sólido lo que explica, lo probaré mas un rato, de todas maneras quería que compartieran "mi cometa"... es decir mi aplicación en la cual se ve ese efecto, es interesante, lo pueden observar. |
|
#5
|
|||
|
|||
|
Adjunto en este post para los que no tienen Delphi a mano un archivo BMP capturado de mi aplicación cuando se mueve "mi cometa"
Cita:
Como dije anteriormente trabaja el BitBtl y transparenta. ¿Como explicar eso??? Última edición por Deiv fecha: 26-08-2007 a las 00:55:58. |
|
#6
|
||||
|
||||
|
Cita:
Lo que hace Bitbtl con la opción MERGECOPY es combinar pixel a pixel con el fondo utilizando la operación booleana AND, como el fondo de la imagen que te paso Neftali es de color blanco al realizar la operación AND el color resultante es el del fondo del formulario (a AND 1 = a), pero si te fijas el resto de colores de la imagen se ven también alterados. De hecho aunque la propiedad Transparent estuviese a FALSE, se obtendría el mismo resultado, porque como ya dije antes, aunque no me creyeras ,al bitbtl le trae sin cuidado. |
|
#7
|
||||
|
||||
|
Como bien te han dicho el código que te pasé no transparenta, simplemente que usando el color adecuado, evita los problemas.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#8
|
|||
|
|||
|
Gracias muchachos, aunque no crean de tiempo sali de duda (casi un año) cuando en un hilo pregunté de otra forma: Evitar parpadeo de imagen Aquí ahora está mas claro, gracias a los Genios como Uds. los novatos salimos de dudas.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|