begin process at 2012 05 29 07:10:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

initialisation du BITMAPINFO pour avoir une palette 256 couleurs!


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

initialisation du BITMAPINFO pour avoir une palette 256 couleurs!

mercredi 2 novembre 2005 à 17:25:08 | initialisation du BITMAPINFO pour avoir une palette 256 couleurs!

SyN42

Bonjour, J'extrait de mon bmp 24bit un plan que je veux afficher avec mfc.

Lorsque je veux remplir la pallette de mon bitmapinfo un probleme se pose.

soit BITMAPINFO bmi;
Or lors de cette déclaration, le bmiColors du bitmapinfo est déclaré en RGBQUAD[1] !!  et je ne peux y mettre mes 256 couleurs car il faudrait RGBQUAD[256].

donc    
for (int i=0; i <256; i++)                        //cas pour la palette bleu
{
        bmi.bmiColors[i].rgbBlue = i;
        bmi.bmiColors[i].rgbGreen = 0;
        bmi.bmiColors[i].rgbRed = 0;
        bmi.bmiColors[i].rgbReserved = 255;
}

ne marche pas.... Comment puis-je gérer ce cas?

merci de votre aide


jeudi 3 novembre 2005 à 10:45:11 | Re : initialisation du BITMAPINFO pour avoir une palette 256 couleurs!

gagah1

Membre Club
Un bitmap 24 bits n'a pas de palette de couleurs.
Le membre RGBQUAD[1] de la structure BITMAPINFO indique le premier element de tableau de couleur de la palette en cas de bitmap <= à 16 bits.
jeudi 3 novembre 2005 à 19:09:31 | Re : initialisation du BITMAPINFO pour avoir une palette 256 couleurs!

chris91

salut,
c'est possible avec un BitBlt et MERGECOPY.
avec MERGECOPY il y a un AND entre la couleur du pixel source et le brush en sélection dans le DC destination.

exemple en WIN32:

HBITMAP hBitmap;
BITMAP bm;
HBRUSH hBrush;
HDC hdc, hdcMem;

// chargement du bitmap en rc
hBitmap = LoadBitmap(hInstance, "IMAGE1");

// récupération informations bmp
GetObject(hBitmap, sizeof(BITMAP), &bm);

// création d'un brush bleu
hBrush = CreateSolidBrush(RGB(0, 0, 255));

// récupération du DC de la fenêtre du prog
hdc = GetDC(hwnd);

// sélection du brush dans le DC
hBrush = (HBRUSH) SelectObject(hdc, hBrush);

// création d'un DCmem
hdcMem = CreateCompatibleDC(hdc);

// sélection du bmp dans le DCmem
hBitmap = (HBITMAP) SelectObject(hdcMem, hBitmap);

// copie du DCmem vers DC avec MERGECOPY
BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight,
       hdcMem, 0, 0, MERGECOPY);

// sélection du brush d'origine, destruction du brush et du DC
DeleteObject(SelectObject(hdc, hBrush));
ReleaseDC(hwnd, hdc);

// sélection du bmp d'origine, destruction du bmp et du DCmem
DeleteObject(SelectObject(hdcMem, hBitmap));
DeleteDC(hdcMem);

dans fichier .rc

IMAGE1 BITMAP DISCARDABLE "image.bmp"

avec ce code, j'ai bien une image bleu avec un bmp 24bpp.
bye.


Cette discussion est classée dans : couleurs, initialisation, bitmapinfo, bmi, bmicolors


Répondre à ce message

Sujets en rapport avec ce message

Boite de dialogue Afficher une image 256niveaux [ par SyN42 ] Bonjour, Dans ma boite de dialogue j'affiche une image dans un 1er temps en couleur avec la fonction StretchDIBits int OldMode = SetStretchBltMode(c OpenGL/GLUT/GLUI [ par abdoulzak ] Salut à tous, Je développe une interface graphique opengl dans le cadre d'un projet de simulation. Je veux dessiner différents points sur une console initialisation CSstring [ par moumouteb ] Voila je voudrais initialiser un tableau de carractère membre de classe. J'utilise une architecture MFC et donc la ligne suivante ne marche pas : cha Initialisation d'un tableau d'objet [ par Alela ] Bonjour,J'aimerais initialiser ma classe de cette façon :MaClasse *mc= new MaClasse[5](7);avec :class MaClasse {     int nb;     public: Gros problème avec recursivité dans les cubes de couleurs [ par skinia ] Bonjour,voici l'énoncé du problème:on possède 4 cubes et sur les chaques faces du cube, il y a des couleurs (en tout il y a 4 couleurs différentes).Ce Transition progressive de textures en OPENGL [ par CausPupus ] En OPENGL tout le monde connait la magnifique gestion des couleurs de l'api notamment le mixage des couleurs qui permet d'avoir un dégradé entre deux [C / Win32] Listbox en ownerdraw : Comment changer les couleurs (fond et texte) des items [ par Inekman ] Bonsoir à tous, Je cherche déseprérément à changer les couleurs des items d'une listbox (blanc sur fond rouge par exemple). J'ai trouvé pêle-mêle des Création d'icône 256 couleurs sous Visual C++ 6.0 [ par samiole ] Bonjour à toutes et à tous,Premier post.Avec L'éditeur Visual C++ 6.0,Comment créer des icônes de 256 couleurs avec une taille autre que 32 * 32 ?Dans text en couleurs dans linux avec le c++ [ par izou ] J e veux savoir comment utiliser le couleurs dans c++ dans linux


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,452 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales