Toya78
Messages postés44Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention23 août 2008
-
28 nov. 2006 à 16:38
Toya78
Messages postés44Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention23 août 2008
-
29 nov. 2006 à 17:28
Bonjour,
Je cherche à modifier une couleur d'un TBitmap 256 couleurs en intervenant directement sur sa palette (je cherche à modifier le blanc en rouge par exemple). Mais je ne comprend pas vraiment le fonctionnement des palettes et je n'ai pas trouvé de tutoriel là dessus (au passage si vous en avez à me conseiller...).
cs_Kenavo
Messages postés702Date d'inscriptionvendredi 21 mars 2003StatutMembreDernière intervention 1 octobre 20095 29 nov. 2006 à 17:19
Salut,
Il faut (je crois) utiliser les fonctions GetDIBColorTable et SetDIBColorTable, soit par exemple dans ton cas :
var i : integer;
TabColor : Array[0..255] of RGBQUAD;
begin Image1.Picture.LoadFromFile('MonImage.bmp'); // chargement image If Image1.Picture.Bitmap.PixelFormat <> pf8bit then
// vérif du format 256 couleurs
exit;
GetDIBColorTable(Image1.Picture.Bitmap.Canvas.Handle,0,256,TabColor); // récup des 256 couleurs
// de la palette
for i := 0 to 255 do
with TabColor[i] do beginif (rgbRed 255) <gras>and (rgbGreen</gras> 255) and (rgbBlue = 255) then //recherche du blanc
begin rgbGreen : = 0; // on ne laisse que le rouge rgbBlue := 0;
end ;
end;
SetDIBColorTable(Image1.Picture.Bitmap.Canvas.Handle,0,256,TabColor); // On remplace la table
Image1.Invalidate; // et on redessine
Image1.Picture.SaveToFile('MonImageModifiee.bmp'); // on sauve
end;
Je pense qu'avec ça tu devrait pouvoir obtenir ce que tu cherches