[원문]
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=654062&ref=654062


    //바탕 이미지 출력

    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();

   

반투명될 DC에도 배경이미지를 그리고 이후에 아이콘과 선을 그리니 아이콘과 선도 반투명이 되는군요..

답변주신분들 감사합니다.^^

+ Recent posts