Comment modifier la palette d'un Bitmap 256 couleurs ? [Résolu]

Signaler
Messages postés
44
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
23 août 2008
-
Messages postés
44
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
23 août 2008
-
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

Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
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
]
Messages postés
702
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2009
4
J'ai pas précisé, mais j'ai mis un TImage (Image1) sur ma form !

Ken@vo








Code, Code, Codec !






[%3C/body
]
Messages postés
44
Date d'inscription
vendredi 1 septembre 2006
Statut
Membre
Dernière intervention
23 août 2008

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 :)