Comment modifier la palette d'un Bitmap 256 couleurs ?

Résolu
Toya78 Messages postés 44 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 23 août 2008 - 28 nov. 2006 à 16:38
Toya78 Messages postés 44 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 23 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...).

Pouvez-vous m'aider ?
Merci

3 réponses

cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
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
    begin      if (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

Ken@vo



<hr size ="2" width="100%" />



Code, Code, Codec !






[%3C/body
]
3
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
29 nov. 2006 à 17:22
J'ai pas précisé, mais j'ai mis un TImage (Image1) sur ma form !

Ken@vo








Code, Code, Codec !






[%3C/body
]
0
Toya78 Messages postés 44 Date d'inscription vendredi 1 septembre 2006 Statut Membre Dernière intervention 23 août 2008
29 nov. 2006 à 17:28
Whaaa j'étais complètement à l'Ouest alors. Je pensais que la palette était accessible via la propriété Palette (HPALETTE) d'un TBitmap.

Merci pour ce code très clair et de plus bien expliqué !
Je vais approfondir le sujet !

Encore merci :)
0
Rejoignez-nous