Mensaje    Asunto: Cambio de color en un tbitmap, timage Responder citando

Hola de nuevo amig@s,

Mi problema es el siguiente:

Estoy intentando representar por pantalla una imagen, algo que ya logre. Mi problema es que la unica forma de introducir la imagen en un Timage o en un Tbitmap es mediante un TCanvas.....lo hago de la siguiente forma

Código:

TImage Image;
 Image->Canvas->Pixels[i][j] = RGB(valor,valor,valor);

//o con un bitmap
TBitmap Bitmap;
Bitmap->Canvas->Pixels[i][j] = RGB(valor,valor,valor);



De esta forma soy capaz de representar la imagen en escala de grises...Por si se lo estan preguntando.."valor" es un entero que va desde 0 hasta 127

Lo que me gustaria hacer es poder introducir la imagen dentro el TImage o del TBitmap con la mascara de colores que me disee la gana..y para eso se me ocurrio hacer lo siguiente:



Código:

// Me creo un matriz de enteros...que por ejemplo sea una paleta
//de  colores de 256 niveles...si quiero crear una paleta para una escala
//de grises
int paletagris[256][3];

for (int i = 0; i<256;i++) {
    for (int j = 0; j<3;j++) {
          paletagris[i][j] = i;
    }
}

//Con lo que obtengo una matriz del tipo [{0,0,0},{1,1,1},{2,2,2},,,,
//{255,255,255}]         

//Normalizo los valores de mi matriz de enteros a 255, o sea que hago
// que el valor mas alto, 127, ahora sea 255 y proporcionalmente hago
//lo mismo con el resto de valores, y los represento con la paleta de
//colores utilizando el Canvas

for (int i = 0; i < NumFilas; i++) {
     for (int j = 0; j < NumCol; j++) {
           int valor = MatrizValores[i,j];
           valor = ceil((valor/127)*255);
           //Si valor = 127 entonces 127/127 = 1 y por lo tanto 1*255 = 255
           //Si valor = 0 entonces 0/127 = 0 y porlo tanto 0*255 = 0
           Image->Canvas->Pixels[i][j] = RGB(paletagris[valor][1],paletagris[valor][2],paletagris[valor][3]);
           // Y lo mismo podria hacer con el TBitmap
       }
}



El problema lo tengo en que al hacerlo de esta forma no me sale ni parecido a la imagen inicial..la composicion de color se "deshace", podreis decir que ahora trabajo con 255 nivels en vez de con 127..pero la verdad es que aunque haga la paleta de grises para 127 valores y no normalice los valores, en este caso es mas curioso aun..por que zonas de la imagen toman color.

Ademas lo que me gustaria hacer es que en vez de generar una paleta de grises...pues poder generar la paleta de 256 colores que me diese la gana..y asignarle un color a cada valor de entero que va desde 0 hasta 255...

Teneis alguna idea de como poder cambiar la paleta de colores? o de como introducir los valores de la matriz dentro de la imagen y luego cambiar la paleta a mi gusto? Muchas gracias[/code]