首页  ·  知识 ·  编程语言
图像透明半透明处理
三月软件工作室  http://www.cnblogs.com/chjw8016/    编辑:dezai  图片来源:网络
CClientDC hdc(this); CDC mdc ; mdc.CreateCompatibleDC (hdc); const int xst
CClientDC hdc(this);
    CDC mdc ;
    mdc.CreateCompatibleDC (&hdc);

    const int xstart = 100 ;
    const int ystart = 100 ;
    unsigned char *px1,*px2 ;
    HBITMAP bg ,fg;
    BITMAP bm1,bm2 ;

    bg=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"2007.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    GetObject(bg,sizeof(BITMAP),&bm1);

   
    px1 = new unsigned char [bm1.bmHeight *bm1.bmWidthBytes ];

    ::GetBitmapBits(bg,bm1.bmHeight *bm1.bmWidthBytes ,px1);  //将图像像素存入数组

    ///处理前景图
    fg=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"532.BMP",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
    ::GetObject(fg,sizeof(BITMAP),&bm2);
   
    px2 = new unsigned char [bm2.bmHeight *bm2.bmWidthBytes ];
    ::GetBitmapBits(fg,bm2.bmHeight *bm2.bmWidthBytes ,px2);    //将图像像素存入数组

    int xend,yend ;
    int x,y ,i,rgb_b ;
    int pxBytes = bm1.bmBitsPixel /8 ;
    xend = xstart +135 ;
    yend = ystart +100 ;

    //处理背景图像像素颜色
    for(y=ystart ;y        for(x=xstart ;x        {
            rgb_b = y*bm1.bmWidthBytes + x*pxBytes;
             
            px1[rgb_b] = px1[rgb_b] * 0.7 ;
            px1[rgb_b+1] = px1[rgb_b+1] *0.7 ;
            px1[rgb_b+2] = px1[rgb_b+2] *0.7 ;
        }
    //处理前景图像像素颜色
    for(y=0 ;y        for(x=0; x        {
            rgb_b =y*bm2.bmWidthBytes +x*pxBytes ;
            i = (ystart+y) *bm1.bmWidthBytes +(xstart+x) * pxBytes;
            px2[rgb_b] =px2[rgb_b] *0.3 + px1[i];
            px2[rgb_b+1] =px2[rgb_b+1] *0.3 + px1[i+1] ;
            px2[rgb_b+2] =px2[rgb_b+2] *0.3 + px1[i+2] ;
        }
    ::SetBitmapBits(fg,bm2.bmHeight *bm2.bmWidthBytes ,px2);

    mdc.SelectObject (bg) ;
    ::BitBlt (hdc,0,0,800,600,mdc,0,0,SRCCOPY) ;

    mdc.SelectObject (fg) ;
    ::BitBlt (hdc,ystart,ystart,135,100,mdc,0,0,SRCCOPY) ;

    ::ReleaseDC(this->m_hWnd, hdc);
    delete [] px1 ;
    delete [] px2 ;
本文作者:三月软件工作室 来源:http://www.cnblogs.com/chjw8016/
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读