- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MFC中读取和显示位图
仅以512×512的.bmp格式的图像为例.在VC++6.0下建立一个基本对话框的工程Special,在对话框加入如下图所示的控件:
其中图像控件的ID号是IDC_IMAGE,“特殊效果”按钮的ID是IDOK,“退出”按钮的ID是IDCANCEL.可以在Special::OnInitDialog 函数中对各个控件的位置和大小及对话框的大小进行重新排列:
SetWindowPos NULL,100,100,600,600,0 ;//改变对话框的大小为600×600
GetDlgItem IDC_IMAGE - MoveWindow 0,0,512,512,FALSE ;
//控件大小和图像大小设置成一致的,即512×512
GetDlgItem IDOK - MoveWindow 30,522,80,30,FALSE ;
GetDlgItem IDCANCEL - MoveWindow 120,522,60,30,FALSE ;
载入位图资源 一幅512×512的位图 ,其ID记为IDB_BITMAP1,按照以下方式读取和显示:
CBitmap bitmap;
bitmap.LoadBitmap IDB_BITMAP1 ;
CWnd* pwnd GetDlgItem IDC_IMAGE ;
CDC* dc pwnd- GetDC ;
CDC MemDC; MemDC.CreateCompatibleDC dc ; MemDC.SelectObject bitmap ; CRect rect;
pwnd- GetClientRect rect ;
dc- BitBlt 0,0,rect.Width ,rect.Height ,MemDC,0,0,SRCCOPY ;//显示位图
bitmap.DeleteObject ;
dc- DeleteDC ;
MemDC.DeleteDC ;
pwnd- ReleaseDC dc ;
pwnd- ReleaseDC MemDC ;
在后面的特效处理中只要把“//显示位图”那一行的代码作相应的改变即可.
1 水平交错效果
原理:将内存设备情境对象中的位图数据拆分成奇、偶扫描线两部分,其中奇数条扫描线由上往下移动,偶数条扫描线则由下往上移动,且两者同时进行。屏幕上的效果为分别由上下两端出现的较淡栅栏图形,逐渐相互靠近,直至整个位图完全清楚。垂直交错效果的实现原理与之类似。 int i,j; for i 0;i 512;i+ 2 j i; while j 0 dc- StretchBlt 0,j-1,512,1,MemDC,0,512- i-j-1 ,512,1,SRCCOPY ; dc- StretchBlt 0,512-j,512,1,MemDC,0,i-j,512,1,SRCCOPY ; j- 2; Sleep 10 ; 2 雨滴效果
原理:将内存设备情境对象中位图数据的最后一条扫描线,顺序地从目标设备中待显示位图的第一条扫描线所在位置移动至最后一条处,并保留此条扫描线在屏幕上移动时留下的轨迹。接着再把MemDC中位图数据的倒数第二条扫描线,顺序地从目标设备中待显示位图的第一条扫描线所在位置移动至倒数第二条处。其余的扫描线依此类推。 int i,j; for i 0;i 512;i++ for j 0;j 512-i;j++ dc- StretchBlt 0,j,512,1,MemDC,0,512-i,512,1,SRCCOPY ; Sleep 10 ; 3 百叶窗效果
原理:将内存设备情境对象中的位图数据分成若干组,然后分别从第一组到最后一组进行搬移,第一次搬移每组中第一条扫描线到目标设备中待显示位图的相应位置,第二次搬移每组中第二条扫描线,接着第三条、第四条扫描线。int i,stepi,j;
stepi 512/10;
for i 0;i stepi;i++ for j 0;j 10;j++ dc- StretchBlt 0,j*stepi+i,512,1,MemDC,0,j*stepi+i,512,1,SRCCOPY ; Sleep 20 ;
文档评论(0)