显示全屏图像并在其前面产生遮挡窗口,这挡窗口实现蒙版效果,这个功能怎么实现啊,请大家给点思路

解决方案 »

  1.   

    遮挡这个概念,叫法不一致,有的人叫虹膜,有的人叫画布,一层半透明的MASK,使用异或计算而得,大部分情况下它还得兼带计算后背景色一致功能,用于多图层粘合,不过都是通过轮廓,效果非常不理想,LZ有好算法吗?
      

  2.   

    CDC mdc,*pDC;
    pDC=GetForegroundWindow()->GetDC();
    CBitmap m_bgBmp,m_manBmp;
    RECT rect;
    GetClientRect(&rect);
    //建立内存DC
    mdc.CreateCompatibleDC(pDC);
    //加载背景位图
    m_bgBmp.m_hObject=(HBITMAP)::LoadImage(NULL,L"b1.bmp",IMAGE_BITMAP,rect.right,rect.bottom,LR_LOADFROMFILE);
    //加载人物位图(人物及蒙版同在一张图上)
    m_manBmp.m_hObject=(HBITMAP)::LoadImage(NULL,L"tt.bmp",IMAGE_BITMAP,190,146,LR_LOADFROMFILE); //取得背景图
    mdc.SelectObject(m_bgBmp);
    //贴背景图
    pDC->BitBlt(0,0,rect.right,rect.bottom,&mdc,0,0,SRCCOPY);
    //将蒙版与背景图做AND运算
    mdc.SelectObject(m_manBmp);
    pDC->BitBlt(0,0,190,146,&mdc,190,0,SRCAND);
    //将要镂空的图与背景图做OR运算
    pDC->BitBlt(0,0,190,146,&mdc,0,0,SRCPAINT);
    上面这段代码可以实现蒙版效果  怎么开始就让窗口全屏呢 还有个问题 ,我的这个遮挡块要会移动才行
      

  3.   

    简单点去掉system menu然后setwindowpos全屏,图片全屏得做拉伸,StretchBlt或者transparentblt