CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

如何利用SOCKET传输BMP图片

楼主yyltt()2005-06-01 02:34:53 在 VC/MFC / 基础类 提问

//获得BMP图象的位图信息头和数据内容,可以用DrawDib对BMP图象进行图形绘制显示。  
  想要问的是在接收lpData数据时候是写入char缓冲,要用什么格式读出并用DrawDib绘制显示?  
  最好详细说下传输时候lpData格式转换。  
   
  void   senddata(HWND   hWnd,SOCKET   vsocket)  
  {  
      HWND   farhwnd   =   hWnd;  
  SOCKET   socket   =   vsocket;  
  static   isDrawDibOpen   =   false;  
  HDRAWDIB   hDibDC   =   NULL;  
  HDC   hDibDC2   =   GetDC(farhwnd);  
  CRect   rect(570,300,810,490);  
  CDC   dc;  
  dc.CreateDC("DISPLAY",NULL,NULL,NULL);  
  CBitmap   bm;  
  int   Width=GetSystemMetrics(SM_CXSCREEN);  
  int   Height=GetSystemMetrics(SM_CYSCREEN);  
  bm.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());  
  CDC   tdc;  
  tdc.CreateCompatibleDC(&dc);  
  CBitmap*pOld=tdc.SelectObject(&bm);  
  // tdc.BitBlt(0,0,rect.Width()/2,rect.Height()/2,&dc,rect.left,rect.top,SRCCOPY);  
          tdc.StretchBlt(0,0,rect.Width(),rect.Height(),&dc,  
  rect.left,rect.top,rect.Width(),rect.Height(),SRCCOPY);  
  tdc.SelectObject(pOld);  
  BITMAP   btm;  
  bm.GetBitmap(&btm);  
  DWORD   size=btm.bmWidthBytes*btm.bmHeight;  
  LPSTR   lpData=(LPSTR)GlobalAlloc(GPTR,size);  
    BITMAPINFOHEADER   bih;  
  bih.biBitCount=btm.bmBitsPixel;  
  bih.biClrImportant=0;  
  bih.biClrUsed=0;  
  bih.biCompression=0;  
  bih.biHeight=btm.bmHeight;  
  bih.biPlanes=1;  
  bih.biSize=sizeof(BITMAPINFOHEADER);  
  bih.biSizeImage=size;  
  bih.biWidth=btm.bmWidth;  
  bih.biXPelsPerMeter=0;  
  bih.biYPelsPerMeter=0;  
  GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);  
  //bm.GetBitmapBits(size,lpData);//此函数在处理5-5-5模式的16位色下会出现颜色混乱  
     
                        send(socket,lpData,size,0);  
  } 问题点数:0、回复次数:2Top

1 楼yyltt()回复于 2005-06-01 02:39:29 得分 0

还有就是客户端对CDC   dc和CBitmap   bm等环境初始化和服务器是一样的,只不过服务器通过SOCKET把lpData传到客户端进行图形绘制显示。不知道这种思路对不对?Top

2 楼laiyiling(陌生人[MVP])回复于 2005-06-01 07:22:27 得分 0

http://www.vckbase.com/document/viewdoc/?id=639  
  例子中有抓屏幕位图传输的功能,参考一下.Top

相关问题

  • socket传输
  • 做传输时,用windows socket:send和recv,传图片时如何显示出来?
  • socket异步传输数据
  • Socket文件传输,急急。。
  • 用socket传输文件
  • socket数据传输问题?
  • picturebox的图片如何网络传输?
  • bmp图片问题。
  • 关于异步Socket传输问题
  • 怎样通过socket传输图像?

关键词

  • dc
  • socket
  • null
  • bih
  • btm
  • lpdata
  • tdc
  • rect
  • bm
  • bmp

得分解答快速导航

  • 帖主:yyltt

相关链接

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

广告也精彩

反馈

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