[MFC]Afficher une image bmp niveau de gris SetDIBitsToDevice
Bonsoir,
Je possède un tableau avec des valeurs entre 0 et 255 qui représentent mon image en niveau de gris. Je voudrais l'afficher avec la méthode SetDIBitsToDevice. J'ai déjà utilisé la méthode setPixels() mais elle est trop lente pour l'affichage d'un flux de données. J'ai déjà fait de nombreuses recherches sur internet sans succès.
Voivi où j'en suit dans mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
...
BITMAPINFOHEADER bmih;
bmih.biWidth = 256;
bmih.biHeight = 240;
bmih.biPlanes = 1;
bmih.biCompression = BI_RGB;
bmih.biSize = sizeof(BITMAPINFOHEADER);
bmih.biBitCount = 8;
bmih.biClrUsed = 0;
bmih.biClrImportant = 0;
bmih.biXPelsPerMeter = 0;
bmih.biYPelsPerMeter = 0;
bmih.biSizeImage = 0;
BITMAPINFO bm_info;
bm_info.bmiHeader = bmih;
RGBQUAD *colormap;
colormap = new RGBQUAD[2];
int i;
bm_info.bmiColors[1] = *colormap;
...
BYTE * color;
color = new BYTE[61440];
// Ouverture du fichier en lecture
fbuffer = fopen("test_compression.txt", "r");
// Lecture du tableau proprement dit
for (i = 0; i < 61440; i++)
fscanf(fbuffer, "%d", &color[i]);
// Fermeture du fichier
fclose(fbuffer);
... |
Jusqu'ici le résultat n'est pas terrible. Les pixel ne s'affiche pas en niveau de gris mais avec des couleur bizare. Que puis-je faire pour remédier à cela ?
http://ece.fsa.ucl.ac.be/ldor/fichiers/WndPlayer.bmp
Merci.