设为首页 加入收藏

TOP

1.5.3 图像的滑动显示
2013-10-07 00:23:40 来源: 作者: 【 】 浏览:56
Tags:1.5.3 图像 滑动 显示

1.5.3  图像的滑动显示

滑动是将图像看做一个整体,显示时不能像扫描那样,扫描方式有些像打开一幅画,例如显示上部分的时候,下部分可以不显示。而移动则可以看成一块木板画,显示时候必须按照物理顺序进行,例如从上向下平移时,必须先显示下面的图像,后显示上面的图像。因此平移的算法比扫描要难一些,平移是以复制的方法显示图像的,每次显示一次,复制的行数就增加一行,直至显示完成。

 /*******************************************
*******************************
*函数名:
*    Slide(CDC *pDC)
*
*函数参数:
*    CDC *pDC-指向设备环境的指针,用于显示位图数据
*
*返回值:
*    无
*
*说明:该函数实现了图像的滑动显示的效果
**********************************************
****************************/
void SpecialEffectShow::Slide(CDC *pDC)
{
int bitmapWidth=GetDimensions().cx;//获得源图像
的宽度,以像素为单位
int bitmapHeight=GetDimensions().cy;//获得源图像
的高度,以像素为单位
 CRect rect(0,0,bitmapWidth,bitmapHeight);//以源
图像的尺寸创建一个矩形
CBrush brush(RGB(255,255,255)); //设置画刷为白色
pDC->FillRect(&rect,&brush);//将已经显示出来的原
图像重新设置成白色,达到刷新屏幕的效果
 LPBITMAPINFO pBitmapInfo=(BITMAPINFO*)m_lpBmpInfoHead;
//为适应StretchDIBits函数的需要,将图像信息
头指针强制转换为LPBITMAPINFO类型
 for(int i=0;i<=bitmapWidth;i++)//滑动特效显示的具体算法
{
for(int j=0;j<=bitmapHeight;j=j+8)
{
::StretchDIBits(pDC->GetSafeHdc(),
0,  j-8 ,  i+1, 8,
bitmapWidth-i, bitmapHeight-j, i+1, 8,
m_pImgData, pBitmapInfo,
DIB_RGB_COLORS, SRCCOPY);
}
Sleep(3);//设置延时时间
}
}

在视图类CChap1_6View中映射“滑动显示”菜单事件处理函数OnSlide(),该函数的实现过程与前面“扫描显示”菜单事件处理函数CChap1_6View::OnScan()相类似,限于篇幅,此处不赘述,感兴趣的读者可以运行程序,查阅相关代码。程序运行时,点击“滑动显示”菜单,效果如图1-26所示。

 
(点击查看大图)图1-26  滑动显示的效果
【责任编辑:夏书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.5.5 图像的马赛克显示 下一篇1.5.4 图像的渐进显示

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: