A ver, a ver si entiendo lo que querés hacer...
1_ Si entiendo bien. Vos tenés una imagen como la que mostraste.
2_ El usuario eleige un color de 0 a 132 en un textbox específico.
3_ Dado el índice del color (0..132) y el textbox en el que se modificó, yo cambio todos los pixeles de un tenerminado color (según el textbox) por otro color (según el índice dado).
¿Tamos?
Entonces yo lo que haría sería tener dos imágenes. En principio iguales. Una se la muestro al usuario y la otra no.
También tendría un arreglín con los colores.
Código Delphi
[-]
const Colores: array[1..132] of TColor = (clBlue, clWhite...., $056677F4,);
Y después reemplazaría los pixeles de mi imagen visible, siguiendo como guía la imagen que no muestro (y que nunca modifico).
En principio podrías usar la propiedad Pixels. No es lo más aconsejable por la velocidad, pero para empezar podrías probar con eso que es más fácil.
Código Delphi
[-]
var X; Y: Integer
begin
for X:= 1 to 32 do
for Y:= 1 to 32 do
if ImagenOculta.Bitmap.Canvas.Pixels[X,Y] = #004566AF then ImagenVisible.Bitmap.Canvas.Pixels[X, Y]:= Colores[IndiceIndicadoPorUsuario];
end;
Nota: Estoy tocando de oído porque no tengo Delphi acá, así que esto puede andar perfecto o ni siquiera compilar.
¿Se entiende más o menos lo que digo?