Untitled
unknown
plain_text
a year ago
1.4 kB
15
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