PDA

Ver la Versión Completa : Alterar los colores de un TImage


Jan_polero
16-12-2004, 17:58:50
Hola a todos.
Cómo se podría hacer que una imagen se fuera iluminando intermitentemente?,es decir, algo parecido al fade out pero al contrario.Y que la imagen volviese a quedar como al principio.
No sé si me he explicado.

<Sergio>
17-12-2004, 19:00:07
Usas un Tbitmap, usas el scanline para tener una referencia a la línea de la imagen que trataras. NO USES EL PIXELS[x,y] De acuerdo al formato de pixeles (mejor si es 16 bits o 24 bits que es más cómodo) aplicas suma saturada con 3 tablitas para reescalar los colores de cada canal rgb. La tabla la precalculas previamente asi ganas mucha velocidad. Luego pintas en pantalla tu Tbitmap mejor con un bitblt().

Jan_polero
21-12-2004, 10:07:51
Gracias por contestar,pero si supiera utilizar scanline y aplicar suma saturada con 3 tablitas para reescalar los colores no lo preguntaría.Necesito un poco más de información menos "técnica",o usar algún ejemplo.Gracias.

<Sergio>
22-12-2004, 14:17:47
No es tan difícil como parece.

1. el scanline: busca en la ayuda como acceder a el, buscando en Tbitmap.

2. para usar el scanline define un tipo de dato: Tlinea: un arreglo de pixeles del mismo formato que vayas usar, por ejemplo 24 bits sería un simple arreglo de bytes.

3. define un Plinea=^Tlinea;

4. define una variable del tipo Plinea

5. asigna a Plinea el scanline de la línea con que vas a trabajar

6. utiliza tu variable como un simple arreglo estático, OJO mucho control con tu ciclo for para que no se salga de los límites de ancho de la imagen va de 0 a (ancho*3)-1 para 24bits, igual con la línea para el scanline de 0 a alto-1.

7.- Suma saturada: es lo más fácil: la tabla la llenas con valores de 0 a 510 que es lo máximo que da 255+255, con un if truncas si es mayor a 255 a 255 y punto final. :D

Jan_polero
23-12-2004, 17:57:30
Ok,muchas gracias.Ahora ya entiendo mejor lo que debo hacer :-).Un saludo.