char array in Bitmap umwandeln



  • Hallo zusammen,

    ich hoffe nun hier richtig zu sein.

    Eine Anwendung liefert mir ein 640*480 unsigned char array in dem in jedem Feld genau 1 Pixel eines 8 Bpp codierten Bitmaps gespeichert ist.
    Das ganze soll jetzt als 'echtes' BMP gespeichert werden, bzw im nächsten Schritt an eine Fkt übergeben werden, die mir daraus ein AVI macht.

    Hier mein bisheriger Ansatz:

    HDC hdcscreen=GetDC(0); 
        HDC hdc=CreateCompatibleDC(hdcscreen); 
        ReleaseDC(0,hdcscreen); 
    
        HBITMAP memBM = CreateCompatibleBitmap ( hdcscreen,640,480 ); 
        SetBitmapBits(memBM,sizeof(cur_pic.image),&(cur_pic.image)); 
        //cur_pic.image ist das char array 
    
        SelectObject ( hdc, memBM ); 
    
        AddAviFrame(avi,memBM); //hier kommt die Übergabe an die AVI-Fkt
    

    Allerdings bleibt memBM im Debugger immer bei 0x000000.
    Kann das so überhaupt funktionieren, oder muss da noch mehr passieren?

    Besten Dank!

    MfG,
    Markus



  • Hoi,

    Also das:

    quelle schrieb:

    Allerdings bleibt memBM im Debugger immer bei 0x000000.

    versteh ich schon, da du das machst:

    quelle schrieb:

    [...]
    ReleaseDC(0,hdcscreen);

    HBITMAP memBM = CreateCompatibleBitmap ( hdcscreen,640,480 );
    [...]

    --------------------------------
    Was das soll, versteh ich auch nicht so recht:

    HDC hdcscreen=GetDC(0);
        HDC hdc=CreateCompatibleDC(hdcscreen);
        ReleaseDC(0,hdcscreen);
    

    Denn:

    MSDN zu CreateCompatibleDC schrieb:

    HDC CreateCompatibleDC(
    HDC hdc // handle to the device context
    );

    Parameters
    hdc
    Handle to an existing device context. If this handle is NULL, the function
    creates a memory device context compatible with the application's current
    screen.

    PS: GetLastError kann auch s.t. helfen 😉


Anmelden zum Antworten