AlphaBlend() 함수를 이용한 반투명 처리 DarkKaiser, 2010년 3월 30일2023년 9월 4일 //바탕 이미지 출력 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(); C/C++/VC++