Untitled

 avatar
unknown
plain_text
5 months ago
1.4 kB
5
Indexable
void CKOLKVIJUM12023View::DrawImgTransparent(CDC* pDC, DImage* img) {
    CRect rect(0, 0, img->Width(), img->Height());
    BITMAP bm;
    bm.bmWidth = rect.Width();
    bm.bmHeight = rect.Height();

    CBitmap* bmpImage = new CBitmap();
    CBitmap* bmpMask = new CBitmap();
    bmpImage->CreateCompatibleBitmap(pDC, bm.bmWidth, bm.bmHeight);
    bmpMask->CreateBitmap(bm.bmWidth, bm.bmHeight, 1, 1, NULL);

    CDC* SrcDC = new CDC();
    CDC* DstDC = new CDC();
    SrcDC->CreateCompatibleDC(pDC);
    DstDC->CreateCompatibleDC(pDC);

    CBitmap* pOldSrcBmp = SrcDC->SelectObject(bmpImage);
    CBitmap* pOldDstBmp = DstDC->SelectObject(bmpMask);

    img->Draw(SrcDC, rect, rect);

    COLORREF clrTopLeft = SrcDC->GetPixel(0, 0);
    COLORREF clrSaveBk = SrcDC->SetBkColor(clrTopLeft);
    DstDC->BitBlt(0, 0, bm.bmWidth, bm.bmHeight, SrcDC, 0, 0, SRCCOPY);

    COLORREF clrSaveDstText = SrcDC->SetTextColor(RGB(255, 255, 255));
    SrcDC->SetBkColor(RGB(0, 0, 0));
    SrcDC->BitBlt(0, 0, bm.bmWidth, bm.bmHeight, DstDC, 0, 0, SRCAND);

    pDC->BitBlt(0, 0, bm.bmWidth, bm.bmHeight, DstDC, 0, 0, SRCAND);
    pDC->BitBlt(0, 0, bm.bmWidth, bm.bmHeight, SrcDC, 0, 0, SRCPAINT);

    DstDC->SetTextColor(clrSaveDstText);
    SrcDC->SetBkColor(clrSaveBk);
    SrcDC->SelectObject(pOldSrcBmp);
    DstDC->SelectObject(pOldDstBmp);

    delete SrcDC;
    delete DstDC;
}
Editor is loading...
Leave a Comment