AlphaBlend() 함수를 이용한 반투명 처리

    //바탕 이미지 출력
    CDC MemDC;
    MemDC.CreateCompatibleDC(pDC);


    CBitmap bmpBack;
    bmpBack.LoadBitmap(IDB_BKIMG2);
    CBitmap *pOldBackBitmap = (CBitmap*) MemDC.SelectObject(&bmpBack);


    BITMAP backBitMap;
    bmpBack.GetBitmap(&backBitMap);


    pDC->BitBlt(0, 0, backBitMap.bmWidth, backBitMap.bmHeight, &MemDC, 0, 0, SRCCOPY);


    MemDC.SelectObject(pOldBackBitmap);
    MemDC.DeleteDC();
   
    //아이콘, 선 출력
    CDC  dcMem;
    dcMem.CreateCompatibleDC(pDC);
    pOldBackBitmap = (CBitmap*) dcMem.SelectObject(&bmpBack);


    HICON hIcon;
    hIcon = AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_EQICON));


    for(int i = 0 ; i < 10 ; i++){
        for(int j = 0 ; j < 10 ; j++)
        {
            ::DrawIconEx(dcMem.GetSafeHdc(), i* 40, j*40, hIcon, 30, 30, 0, NULL, DI_NORMAL);
        }       
    }
    DestroyIcon(hIcon);


    CPen myPen;
    myPen.CreatePen(PS_SOLID, 5, RGB(255, 255, 0));
    CPen* pOldPen = NULL;
    pOldPen = (CPen*)dcMem.SelectObject(&myPen);


    dcMem.MoveTo(0, 600);
    dcMem.LineTo(500, 600);


    BLENDFUNCTION bf;
    bf.AlphaFormat = 0;
    bf.BlendFlags = 0;
    bf.BlendOp = AC_SRC_OVER;
    bf.SourceConstantAlpha = 100;


    BOOL bRes = AlphaBlend(pDC->GetSafeHdc(), 0, 0, backBitMap.bmWidth, backBitMap.bmHeight,dcMem.GetSafeHdc(), 0, 0, backBitMap.bmWidth, backBitMap.bmHeight, bf);
    if(!bRes)
    {
        AfxMessageBox(GetLastError(), MB_ICONERROR);
    }
   
    dcMem.SelectObject(pOldPen);
    dcMem.DeleteDC();

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다.