bitblt will nicht wie ich



  • hallo leute,
    hab diesen code geschrieben um mir ein kleines logo links oben in ein größeres bild zu kopieren.

    //desktopauflösung ermitteln
    xres = GetSystemMetrics(SM_CXSCREEN);
    yres = GetSystemMetrics(SM_CYSCREEN);
    
    //memory bitmap erstellen
    memDC = CreateCompatibleDC ( NULL );
    memBM = CreateCompatibleBitmap ( memDC, xres, yres );
    SelectObject ( memDC, memBM );
    
    //logo laden, 128 x 128
    LogoBM = (HBITMAP)LoadImage(GetModuleHandle(NULL),"C:\\testlogo.bmp", IMAGE_BITMAP, 128, 128, LR_LOADFROMFILE);
    LogoDC = CreateCompatibleDC( NULL );
    SelectObject(LogoDC, LogoBM);
    
    // test nr.1 -> wird ein schwarzes bitmap in desktopauflösung
    dc2bitmap(memDC, xres,yres,"C:\\test1.bmp");
    
    // test nr.2 -> wird ein 128x128 bitmap mit dem logo
    dc2bitmap(LogoDC,128,128,"C:\\test2.bmp");
    
    //Logo draufblitten geht anscheinend nicht ????
    BitBlt(memDC,0,0,128,128,LogoDC,0,0,SRCCOPY);
    
    //test nr.3 -> wird nur ein schwarzes bitmpa in desktop auflösung
    //sollte aber links oben das logo drin sein, ist aber nicht :(
    dc2bitmap(memDC,xres,yres,"C:\\test3.bmp");
    

    die dc2bitmap-Funktion hab ich hier im Forums-FAQ gefunden.

    hab grad keinen plan warum der test3.bmp kein logo links oben hat, sondern nur schwarz ist.

    wer sieht einen fehler?



  • Das CreateCompatibleBitmap musst du mit einem "normalen" DC aufrufen - nicht mit deinem neu erstellten 😉


Anmelden zum Antworten