网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
浅谈位图的淡入淡出和渐隐
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
electObject(&bmp);

bmp.DeleteObject();

mode=1;

counter=0;

SetTimer(1,200,NULL);

onrun=1;

}



9:使用ClassWizard为CPatternDemoDlg加入WM_TIMER的消息响应函数OnTimer(),并在其中添加如下代码:



if(mode==1)

{

    if(counter>7)

    {

    mode=2;

    counter=0;

    return;

    }

    pdc->SelectObject(&brush[counter]);

    pdc->BitBlt(0,0,100,100,&memDC,0,0,0x000C0324);

    counter++;

}



if(mode==2)

{

    if(counter>7)

    {

    mode=3;

    counter=0;

    return;

    }

if(counter==0)

{

bmp.LoadBitmap(IDB_BMPSOURCE2);

memDC.SelectObject(&bmp);

bmp.DeleteObject();

}

pdc->SelectObject(&brush[counter]);

pdc->BitBlt(0,0,100,100,&memDC,0,0,0x00AC0744);

counter++;

}

if(mode==3)

{

    if(counter>7)

{

memDC.DeleteDC();

bmp.DeleteObject();

KillTimer(1);

onrun=0;

return;

}

pdc->SelectObject(&brush[counter]);

pdc->BitBlt(0,0,100,100,NULL,0,0,0x00A000C9);

counter++;

}



9:在CPatternDemoDlg::CpatternDemoDlg()中加入:



onrun=0;



10: 使用ClassWizard为CPatternDemoDlg加入WM_DESTORY的消息响应函数OnDestory(),并在其中添加如下代码:



memDC.DeleteDC();

KillTimer(1);



编译运行该项目,可以看到第一幅图象从背景中渐渐的浮现出来,随后,又渐渐地隐入第二幅图象之中,接着,第二幅图象又慢慢地消失于背景中。



动画法:

    这种方法是利用直接操作位图的数据来实现的,可以实现像素颜色的平滑变化,视觉效果可以做的很好,因此,这种方法在屏保中的应用非常多。

    首先,我们必须了解bmp图形的结构。一个bmp图形由两个部分组成,即文件头和数据区,文件头存放bmp图形的大小、格式等信息,数据区存放bmp图形各个像素的颜色信息。对于24位真彩色的bmp来说,文件头的大小为54个字节,前14个字节对应VC中定义的BITMAPFILEINFO结构,后40个字节对应BITMAPINFOHEADER结构。我们把bmp数据区的数据读出,经过一定的运算,再利用WIN32API::StretchDIBits()函数直接输出到显示DC上,就可以实现一些特技效果。



    下面让我们分步去实现一个全屏幕的演示程序



1:生成一个基于对话框的项目,命名为F1:

2:删除F1Dlg.h、F1Dlg.h和F1.cpp中与其相关的所有代码。

3:在项目中添加一个基类为generic Cwnd的新类,命名为CW.

4:为CW类添加如下私有成员变量:

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

    UINT y_offset;

    UINT x_offset;

    UINT stage;

    BYTE* p3;

    BYTE * p2;

    BYTE * p1;

    BITMAPINFOHEADER header;

    HGLOBAL hlb1;

    HGLOBAL hlb2;

    HGLOBAL hlb3;

    UINT start;

    UINT counter;

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

并在W.h的顶部加入宏定义 #define BMP_SIZE 192000

5:为CW添加Create()虚函数,WM_CREATE,WM_TIMER,WM_PAINT,WM_DESTORY,WM_LBUTTONDOWN的消息句柄,接受缺省的函数名称。

6:删除CW::Create()中的原有代码,用以下

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号