Remplissage de la structure BITMAPINFO pour un bitmap monochrome

Le
Michel
Bonjour,
j'essaye d'utiliser CreateDIBSection() pour crer un bitmap
monochrome. Pour cela, je dois remplir pralablement une structure
BITMAPINFO qui contient les caractristiques du bitmap crer, dont
la palette de couleur utilise (noir pour 0, blanc pour 1). Cette
dernire est un tableau de deux structures RGBQUAD.
Voila l'aide sur BITMAPINFO :
"BITMAPINFO
The BITMAPINFO structure defines the dimensions and color information
for a DIB.

typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO, *PBITMAPINFO;

Members
bmiHeader
Specifies a BITMAPINFOHEADER structure that contains information about
the dimensions of color format.

bmiColors
The bmiColors member contains one of the following:
-An array of RGBQUAD. The elements of the array that make up the color
table.
-[] (ne me concerne pas)

The number of entries in the array depends on the values of the
biBitCount and biClrUsed members of the BITMAPINFOHEADER structure."

Mon problme est que je ne sais pas comment insrer ma palette. La
structure BITMAPINFO contient un tableau d'une seule structure
RGBQUAD, ce qui quivaut peu prs la structure :
struct {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors;
}
Il ne m'est donc pas possible de caser deux structures RGBQUAD au lieu
d'une.

Si vous avez dj utilis cette mthode pour crer un bitmap avec
palette, merci de m'aider.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Serge Paccalin
Le #22354671
Le Wed, 14 Jul 2010 02:42:12 -0700 (PDT), Michel a écrit
(dans  posté dans fr.comp.os.ms-windows.programmation) :

Bonjour,
j'essaye d'utiliser CreateDIBSection() pour créer un bitmap
monochrome. Pour cela, je dois remplir préalablement une structure
BITMAPINFO qui contient les caractéristiques du bitmap à créer, dont
la palette de couleur utilisée (noir pour 0, blanc pour 1). Cette
dernière est un tableau de deux structures RGBQUAD.
Voila l'aide sur BITMAPINFO :
"BITMAPINFO
The BITMAPINFO structure defines the dimensions and color information
for a DIB.

typedef struct tagBITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
} BITMAPINFO, *PBITMAPINFO;

The number of entries in the array depends on the values of the
biBitCount and biClrUsed members of the BITMAPINFOHEADER structure."

Mon problème est que je ne sais pas comment insérer ma palette. La
structure BITMAPINFO contient un tableau d'une seule structure
RGBQUAD, ce qui équivaut à peu près à la structure :
struct {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors;
}
Il ne m'est donc pas possible de caser deux structures RGBQUAD au lieu
d'une.

Si vous avez déjà utilisé cette méthode pour créer un bitmap avec
palette, merci de m'aider.



Il faut allouer dynamiquement un BITMAPINFO avec la bonne taille.

Dans ton cas :

BITMAPINFO* Info = (BITMAPINFO*)malloc(sizeof (BITMAPINFO)
+ sizeof (RGBQUAD));

Info->bmiColors[0] = RGB(0,0,0);
Info->bmiColors[1] = RGB(255,255,255);

Pour une image 8 bits et 256 couleurs dans la palette, il faudrait
sizeof (BITMAPINFO) + 255 * sizeof (RGBQUAD)

--
___________
_/ _ _`_`_`_) Serge PACCALIN -- sp ad mailclub.net
_L_) Il faut donc que les hommes commencent
-'(__) par n'être pas fanatiques pour mériter
_/___(_) la tolérance. -- Voltaire, 1763
Michel
Le #22354661
Merci pour votre réponse. On ne m'a jamais répondu avec tant de
rapidité!
Publicité
Poster une réponse
Anonyme