CBitmap aus CDC



  • Wie kann ich aus dem CDC

    CDC *pDC = GetDC();
    

    und der Transparenten Ebene

    // Aus Orignal-Bitmap Hintergrund entfernen
        m_pTransMemDC->SetBkColor(RGB(255,255,255));
        // Negativ von S/W Bitmap, HG ist nun schwarz (RGB:0,0,0)
        m_pMaskMemDC->BitBlt(0,0,m_nTransBmpWidth,m_nTransBmpHeight,
                             m_pMaskMemDC,0,0, DSTINVERT );
        // geladene Bitmap mit negativ von S/W-Bitmap verunden
        // --> HG der geladenen Bitmap ist nun schwarz
        m_pTransMemDC->BitBlt(0,0,m_nTransBmpWidth,m_nTransBmpHeight,
                              m_pMaskMemDC,0,0, SRCAND );
        // Mask wieder restaurieren (HG ist weiss = 0xFFFFFF)
        m_pMaskMemDC->BitBlt(0,0,m_nTransBmpWidth,m_nTransBmpHeight,
                             m_pMaskMemDC,0,0, DSTINVERT );
    

    welche ich wunderbar mittels

    pDC->BitBlt(10,10,m_nTransBmpWidth,m_nTransBmpHeight,pMaskMemDC,0,0,SRCAND);
    pDC->BitBlt(10,10,m_nTransBmpWidth,m_nTransBmpHeight,m_pTransMemDC,0,0,SRCPAINT);
    

    durchsichtig anzeigen lassen kann,

    nun in ein neues CDC reinpacken um daraus das durchsichtige Bitmap weiter verarbeiten zu können ?

    Dieser Versuch

    CDC *temp = new CDC;
    	temp->CreateCompatibleDC(m_pMaskMemDC);
    	temp->BitBlt(0,0,m_nTransBmpWidth,m_nTransBmpHeight,pDC,0,0,SRCCOPY);
            temp->BitBlt(10,10,m_nTransBmpWidth,m_nTransBmpHeight,m_pMaskMemDC,0,0,SRCAND);
    
    // Bereits das da oben geht nicht... wie soll dann das da unten gehen...
    
    	CBitmap *b_map = new CBitmap;
    	b_map->CreateCompatibleBitmap(temp, m_nTransBmpWidth, m_nTransBmpHeight);
    

    Geht schonmal irgendwie nicht 😞

    Wäre nett, wenn mir einer nen Tipp geben könnte.


Anmelden zum Antworten