网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
VC下显示位图的几种方法
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
itmapInfo.biBitCount!=24)
 {
  MessageBox("对不起,当前程序只支持24位位图信息!");
  return;
 }
 bitmapinfo=(BITMAPINFO*)new char[sizeof(BITMAPINFOHEADER)];
 if(!bitmapinfo)
 {
  MessageBox("内存分配失败!");
  return;
 }
 /*把BMP位图信息头中的数据读取到位图信息结构中去.*/
 memcpy(bitmapinfo,&BitmapInfo,sizeof(BITMAPINFOHEADER));
 /*用来得到位图文件的大小*/
 DWORD dataByte=BitmapHead.bfSize-BitmapHead.bfOffBits;
 BmpData=(BYTE*)new char[dataByte];
 if(!BmpData)
 {
  MessageBox("内存分配失败!");
  delete bitmapinfo;
  delete BmpData;
  return;
 }
 if(file.Read(BmpData,dataByte)!=dataByte)
 {
  MessageBox("读取位图数据失败!");
  return;
 }
 file.Close();
 CClientDC *pDC=new CClientDC(this);
 pDC->SetStretchBltMode(COLORONCOLOR);
 StretchDIBits(pDC->GetSafeHdc(),200,0,BitmapInfo.biWidth,BitmapInfo.biHeight,  0,0,BitmapInfo.biWidth,BitmapInfo.biHeight,BmpData,bitmapinfo,DIB_RGB_COLORS,SRCCOPY);
}
最后给大家介绍两个显示位图的特效的例子更多的特效显示(http://www.pconline.com.cn/pcedu/empolder/gj/vc/0504/608259.html):
1> 水平交错显示位图
void CListBmap::OnButton1() 
{
 // TODO: Add your control notification handler code here
 HBITMAP hBitmap;
 CBitmap cBitmap;
 hBitmap=(HBITMAP)::LoadImage(::AfxGetInstanceHandle(),"NetFriend.bmp",  IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
 cBitmap.Attach(hBitmap);
 cBitmap.GetBitmap(&bitmap);
 int i=0,j=0;
 CClientDC *pDC=new CClientDC(this);
 CDC memDC;
 memDC.CreateCompatibleDC(GetDC());
 memDC.SelectObject(&cBitmap);
 for(i=0;i<bitmap.bmHeight;i+=2)
 {
  j=i;
  while(j>0)
  {
   pDC->StretchBlt(0,j-1,bitmap.bmWidth,1,&memDC,0,bitmap.bmHeight-(i-j+1),    bitmap.bmWidth,1,SRCCOPY);
   pDC->StretchBlt(0,bitmap.bmHeight-j,bitmap.bmWidth,1,&memDC,0,i-j,    bitmap.bmWidth,1,SRCCOPY);
   j-=2;
  }
  Sleep(50);
 }

}

2>雨点显示:
void CListBmap::OnButton2() 
{
 // TODO: Add your control notification handler code here

 HBITMAP hBitmap;
 CBitmap cBitmap;
 hBitmap=(HBITMAP)::LoadImage(::AfxGetInstanceHandle(),"NetFriend.bmp",  IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);
 cBitmap.Attach(hBitmap);
 cBitmap.GetBitmap(&bitmap);
 int i=0,j=0;
 CClientDC *pDC=new CClientDC(this);
 CDC memDC;
 memDC.CreateCompatibleDC(GetDC());
 memDC.SelectObject(&cBitmap);
 for ( i=0; i<=bitmap.bmHeight; i++ )   
 {
&n

  • 下一篇资讯: 2000/XP 下实现内存映射
  • 网学推荐

    免费论文

    原创论文

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