争怎路由网:是一个主要分享无线路由器安装设置经验的网站,汇总WiFi常见问题的解决方法。

浅谈位图的淡入淡出与渐隐

时间:2024/7/13作者:未知来源:争怎路由网人气:

WS_POPUP, rectDefault,NULL,NULL);

    return TRUE;

///////////////////////////

8:在CW::OnCreate(...)函数中加入如下代码:

/////////////////////////////

    counter=0;   

    int cx=GetSystemMetrics(SM_CXSCREEN);

    int cy=GetSystemMetrics(SM_CYSCREEN);

    x_offset=(cx-640)/2;

    y_offset=(cy-400)/2;

/////////////////////////////

9: 在CW::OnDestroy()函数中加入如下代码:

////////////////////////////////

KillTimer(1);

    GlobalFree(hlb1);

    GlobalFree(hlb2);

    GlobalFree(hlb3);

/////////////////////////////

10: 在CW:: OnLButtonDown(...)函数中加入如下代码:

//////////////////////////////

    SendMessage(WM_CLOSE);

//////////////////////////////

11: 在CW:: OnLButtonDown(...)函数中加入如下代码:

/////////////////////////////

CPaintDC dc(this);

    dc.FillSolidRect(0,0,800,600,RGB(0,0,0));

    dc.SetTextColor(RGB(200,0,0));

    if(!start) return;

    CFile f1,f2;

    f1.Open("bmp1.bmp",CFile::modeRead);

    f2.Open("bmp2.bmp",CFile::modeRead);

    f1.Seek(14,CFile::begin);

    f1.Read(&header,40);

    f2.Seek(54,CFile::begin);

    hlb1=GlobalAlloc(GMEM_MOVEABLE,BMP_SIZE);

    p1=(BYTE*)GlobalLock(hlb1);

    p1=(BYTE*)malloc(BMP_SIZE);

    f1.ReadHuge(p1,BMP_SIZE);

    GlobalUnlock(hlb1);

    hlb2=GlobalAlloc(GMEM_MOVEABLE,BMP_SIZE);

    p2=(BYTE*)GlobalLock(hlb2);

    f2.ReadHuge(p2,BMP_SIZE);

    GlobalUnlock(hlb2);

    hlb3=GlobalAlloc(GMEM_MOVEABLE,BMP_SIZE);

    p3=(BYTE*)GlobalLock(hlb3);

    GlobalUnlock(hlb3);

    f1.Close();

    f2.Close();

    stage=1;

SetTimer(1,100,NULL);

start=0;

///////////////////////////

12: 在CW:: OnTimer(...)函数中加入如下代码:

///////////////////////////

if(stage==1)

    {

    if(counter++>63)

    {

        stage=2;

        counter=0;

        return;

    }

        

    for(int i=0;i<BMP_SIZE;i++)

        p3[i]=counter*p1[i]/64;

        ::StretchDIBits(GetDC()->m_hDC,x_offset,y_offset,640,400,0,0,320,200,p3,

            ((BITMAPINFO*)(&header)),NULL,SRCCOPY);

    }

    if(stage==2)

    {

        if(counter++>63)

        {

            stage=3;

            counter=0;

            return;

        }

    for(int i=0;i<BMP_SIZE;i++)

        p3[i]=(64-counter)*p1[i]/64+counter*p2[i]/64;

        ::StretchDIBits(GetDC()->m_hDC,x_offset,y_offset,640,400,0,0,320,200,p3,

            ((BITMAPINFO*)(&header)),NULL,SRCCOPY);

    }

    if(stage==3)

    {

        if(counter++>63)

        {

            KillTimer(1);

            SendMessage(WM_CLOSE);

            return;

        }

    for(int i=0;i<BMP_SIZE;i++)

        p3[i]=(64-counter)*p2[i]/64;

        ::StretchDIBits(GetDC()->m_hDC,x_offset,y_offset,640,400,0,0,320,200,p3,

            ((BITMAPINFO*)(&header)),NULL,SRCCOPY);

    }

//////////////////////////////////

13:最后,将两个分辨率为320*200的24bitBMP拷入工程所在的目录中,分别命名为1.bmp和2.bmp. 编译运行程序,可以看到在黑色的背景中,第一幅图象(1.bmp)由暗渐渐变亮,当它完全出现后,第二幅图象(2.bmp)从第一幅图象中慢慢的浮现出来。当第二幅图象完全取代第一幅后,它的亮度又逐渐减小,最终消失在黑色的背景中。与模式画刷法不同,这些过渡非常平滑。

关键词:浅谈位图的淡入淡出与渐隐




Copyright © 2012-2018 争怎路由网(http://www.zhengzen.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版