Bonjour à tous!
Je veux faire un truc tout bete: je souhaite charger une image avec la bibliothèque CxImage, transformer cettte image en un tableau DIB, et demander à SetDIBitsToDevice() de me l'afficher.
Je fais donc les étapes suivantes:
Je crée ma structure Bitmap:
1 2 3 4 5 6 7 8 9 10 11
| bmi.bmiHeader.biSize = sizeof(BITMAPINFO);
bmi.bmiHeader.biWidth = 234;
bmi.bmiHeader.biHeight = 218;
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 24;
bmi.bmiHeader.biCompression = BI_RGB;
bmi.bmiHeader.biSizeImage = 0;
bmi.bmiHeader.biXPelsPerMeter = 96;
bmi.bmiHeader.biYPelsPerMeter = 96;
bmi.bmiHeader.biClrUsed = 0;
bmi.bmiHeader.biClrImportant = 0; |
Puis je charge l'image considérée:
Et enfin je demande l'affichage du code DIB:
SetDIBitsToDevice(hDC, X, Y, 234, 218, 0, 0, 0, 218, Image.GetDIB(), &bmi, DIB_RGB_COLORS);
Et le résultat est pour le moins surprenant... Au lieu d'avoir mon image de départ, j'ai une image ou les couleurs sont modifiées (le jaune devient violet, le bleu devient vert, le vert devient violet etc...)! de plus, les 10-15 dernières colonnes de pixels de l'image (colonnes de droite) se retrouvent à gauche de l'image...
Je cherche la solution... le tableau DIB devrait pourtant bien me donner tout simplement un truc du genre:
{RGBRGBRGBRGBRGBRGB etc etc} ... ou bien ?
merci d'avance pour vos conseils et votre aide!
Partager