Farbbild mit SetDIBitsToDevice



  • Hallo,

    ich versuche ein Bild in einem "MDICLIENT" Window darzustellen. Dieses ist 200x144 pixel groß und hat das Handle Wnd1. Die Bilder liegen in RGB Rohformat am Ort data.

    BITMAPINFO *bmi = (BITMAPINFO *) malloc(sizeof(BITMAPINFOHEADER));
        bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
        bmi->bmiHeader.biWidth = 200;
        bmi->bmiHeader.biHeight = -144;
        bmi->bmiHeader.biPlanes = 1;
        bmi->bmiHeader.biBitCount = 32;
        bmi->bmiHeader.biCompression = BI_RGB;
        bmi->bmiHeader.biSizeImage = 0;
        bmi->bmiHeader.biXPelsPerMeter = 1;
        bmi->bmiHeader.biYPelsPerMeter = 1;
        bmi->bmiHeader.biClrUsed = 0;
        bmi->bmiHeader.biClrImportant = 0;
    
        SetDIBitsToDevice(GetDC(Wnd1),0,0,200,144,0,0,0,144,data,bmi,DIB_RGB_COLORS);
    

    Ganz falsch kann ich nicht liegen, denn wenn ich statt dessen

    bmi->bmiHeader.biBitCount = 8;
    

    verwende ließt er nur den R Kanal aus, interpretiert ihn als Graustufenbild, und zeigt mir den Inhalt wie gewünscht an.

    Aber mit einem Farbbild kriege ich das nicht hin und ich weiß nicht genau, wo das Problem liegt. Er zeigt dann einfach undefinierbares Wirrwarr an. Kann mir jemand helfen?
    Danke!


Anmelden zum Antworten