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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Image.Load("essai.bmp");
Et enfin je demande l'affichage du code DIB:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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!