WINAPI - stworzenie kopii bitmapy.

0

Mam funkcję do której przesylam bitmapę newBitmap i w srodku tej funkcji chcę zrobić kopię tej bitmapy. Problem w tym ,że przesyłam różne bitmapy ,a uchwyt zrobionej kopii zawsze jest ten sam! Nie wiem co jest w tym kodzie nie w porządku ,próbuję to rozgryźć już dwie godziny.


   HDC hdcNew2 = CreateCompatibleDC( hdcOkno );
    std::cout<<"New bitmap"<< newBitmap <<"\n";
    HBITMAP hbmOld =( HBITMAP ) SelectObject( hdcNew2, newBitmap );
    DeleteObject(hbmOld);
    
    BITMAP bmInfo;
    GetObject( newBitmap, sizeof( bmInfo ), & bmInfo );   
    
    HDC hdcToCopy = CreateCompatibleDC( hdcOkno );  
    HBITMAP EmptyBmp = CreateCompatibleBitmap ( hdcOkno, bmInfo.bmWidth, bmInfo.bmHeight ); 
    HBITMAP hbmOld2 =( HBITMAP ) SelectObject( hdcNew2, EmptyBmp );
    
    if (! BitBlt( hdcToCopy, 0, 0, bmInfo.bmWidth, bmInfo.bmHeight, hdcNew2, 0, 0, SRCCOPY ) )
    {
    std::cout<<"Copying failed\n";
    }
      
    HBITMAP newBitmapCopy =( HBITMAP ) SelectObject( hdcToCopy, hbmOld2 );
    DeleteDC( hdcNew2 ); 
    DeleteDC( hdcToCopy ); 
    
    std::cout<<"Copy of bitmap"<< newBitmapCopy <<"\n";
    
0

Komplikujesz sobie, nie będzie prościej to?

HBITMAP hCopy = (HBITMAP)CopyImage((HANDLE)hBitmapDoSkopiowania, IMAGE_BITMAP, 0, 0, 0);
0

super , nie wiedziałem, że taka funkcja istnieje, dzięki!

1 użytkowników online, w tym zalogowanych: 0, gości: 1