CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  Visual C++ 资源

!抓图(高手请进)

楼主baobeixiong(宝贝熊)2003-06-01 08:35:42 在 VC/MFC / Visual C++ 资源 提问

我正在做一个多媒体播放器,快成功了,但是我不知怎么抓图保存一幅图片,希望高手们能指点一二,最好能给我源代码。 问题点数:0、回复次数:2Top

1 楼cjf1228(小虾米)回复于 2003-06-01 19:01:53 得分 0

HDC   hScreenDC   =   GetDC(NULL);  
  HDC   hMemDC         =   CreateCompatibleDC(hScreenDC);          
  HBITMAP   hbm       =   CreateCompatibleBitmap(hScreenDC,   1024,   768);  
  HBITMAP   oldbm   =   (HBITMAP)   SelectObject(hMemDC,   hbm);    
   
  BitBlt(hMemDC,   0,   0,   1024,   768,   hScreenDC,   0,   0,   SRCCOPY);    
   
  oldbm   =   (HBITMAP)   SelectObject(hMemDC,   oldbm);    
  Top

2 楼baobeixiong(宝贝熊)回复于 2003-06-02 10:04:30 得分 0

我这有个.avi的抓图代码,大家请看,请指点一二  
   
  //Cavi类头文件定义;  
  class   CAvi   file://AVI类,处理AVI文件  
  {  
   public:  
   int   cy;//图象高  
   int   cx;//图象宽  
   file://long   m_maxFrame;  
   BYTE   *pData;//寸储图象数据  
   BITMAPINFO   *m_pBMI;//位图文件信息头  
   PAVISTREAM   pavi;//AVI流  
   PAVIFILE   pfile;//AVI文件指针  
   AVIFILEINFO   *   pfi;   file://AVI信息  
   BOOL   AviRead(int   mFrame);//读AVI文件的第mFrame帧  
   CAvi();//标准构造函数  
   CAviCreate(CString   &string);//用文件名初始化AVI类的成员  
   virtual   ~CAvi();  
  };    
  //Cavi类文件实现部分;  
  CAvi::CAvi()  
  {   AVIFileInit();//初始化AVI库  
   cx=0;//定义图象宽、高、等成员  
   cy=0;  
   m_pBMI=NULL;  
   pData=NULL;  
   file://m_maxFrame=0;  
   pfi=NULL;  
  }  
  CAvi::~CAvi()//析构、释放指针  
  {  
   //   AVIFileClose(pfile);  
   AVIFileExit();  
   if(pData!=NULL)  
    delete   pData;  
    pData=NULL;  
   
   if(m_pBMI!=NULL)  
    delete   m_pBMI;  
    m_pBMI=NULL;  
    if(pfi!=NULL)  
     delete   pfi;  
     pfi=NULL;  
  }  
  CAvi::CAviCreate(CString   &string)//读文件初始化该类  
  {    
   HRESULT   hr;  
   pfi=new   AVIFILEINFO;  
   hr   =   AVIFileOpen(&pfile,   //   returned   file   pointer  
   string,   //   file   name  
   OF_READ,   //   mode   to   open   file   with  
   NULL);  
   hr=   AVIFileInfo(pfile,   file://获取AVI信息,放入pfi中  
   pfi,    
   sizeof(AVIFILEINFO)    
  );  
  cx=pfi->dwWidth;//图象宽、高  
  cy=pfi->dwHeight;  
  hr=AVIFileGetStream(//将AVI变成视频流  
  pfile,    
  &pavi,    
  streamtypeVIDEO,    
  0//LONG   lParam    
  );  
  m_pBMI=new   BITMAPINFO;//定义BMP信息头  
  m_pBMI->bmiHeader.biBitCount=24;  
  m_pBMI->bmiHeader.biClrImportant=0;  
  m_pBMI->bmiHeader.biClrUsed=0;  
  m_pBMI->bmiHeader.biCompression=BI_RGB;  
  m_pBMI->bmiHeader.biHeight=cy;  
  m_pBMI->bmiHeader.biWidth=cx;  
  m_pBMI->bmiHeader.biPlanes=1;  
  m_pBMI->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);  
  m_pBMI->bmiHeader.biXPelsPerMeter=0;  
  m_pBMI->bmiHeader.biYPelsPerMeter=0;  
  m_pBMI->bmiHeader.biSizeImage=cx*cy*3;  
  pData=(BYTE*)new   char[cx*cy*3];//根据AVI中BMP图象的信息定义缓冲区  
  }  
  BOOL   CAvi::AviRead(int   mFrame)//将AVI文件的M帧数据读入PData缓冲区  
  {  
  HRESULT   hr;  
  hr=   AVIStreamRead(   pavi,    
  mFrame,    
  1,    
  pData,    
  cx*cy*3,    
  NULL,    
  NULL  
  );  
  if(hr==0)  
  return   TRUE;  
  else  
  return   FALSE;  
  }  
   
   
   
    上述Cavi类实现部分所涉及到的API函数可以参考微软提供的MSDN。Cavi类中的pData缓冲区存放AVI文件中的具体某一帧图像数据,同时Cavi类的m_pBMI为BMP图像文件信息结构,这时可以根据图像的大小定义BMP图像文件头结构。Top

相关问题

  • 请问各位大虾: 抓图时如何不要把滚动条也抓进来?
  • DirectX抓屏高手请进
  • 图形学高手请进
  • 图像高手请进!
  • 图像高手请进!
  • 位图高手请进!!!!
  • 请问,如何在自己的程序里面做到用USB摄像头抓取图像,并进行保存?
  • 图画图形高手请进
  • 请问如何抓图比一个屏幕大的图
  • 视屏捕抓问题!高手请进!!

关键词

  • 文件
  • 图像
  • hr
  • 信息
  • null
  • cavi
  • pbmi
  • pfi
  • avi
  • hscreendc

得分解答快速导航

  • 帖主:baobeixiong

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo