Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Remplissage de la structure BITMAPINFO pour un bitmap monochrome

2 réponses
Avatar
Michel
Bonjour,
j'essaye d'utiliser CreateDIBSection() pour cr=E9er un bitmap
monochrome. Pour cela, je dois remplir pr=E9alablement une structure
BITMAPINFO qui contient les caract=E9ristiques du bitmap =E0 cr=E9er, dont
la palette de couleur utilis=E9e (noir pour 0, blanc pour 1). Cette
derni=E8re 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 probl=E8me est que je ne sais pas comment ins=E9rer ma palette. La
structure BITMAPINFO contient un tableau d'une seule structure
RGBQUAD, ce qui =E9quivaut =E0 peu pr=E8s =E0 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=E9j=E0 utilis=E9 cette m=E9thode pour cr=E9er un bitmap avec
palette, merci de m'aider.

2 réponses

Avatar
Serge Paccalin
Le Wed, 14 Jul 2010 02:42:12 -0700 (PDT), Michel a écrit
(dans <news:,
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
Avatar
Michel
Merci pour votre réponse. On ne m'a jamais répondu avec tant de
rapidité!