用PictureEx类实现内存图片数据直接显示于picture控件
来源:互联网 发布:淘宝网卖家服务中心 编辑:程序博客网 时间:2024/06/04 18:22
PictureEx类能支持bmp、jpg、gif、png等格式图片的显示,同时也提供了3中导入图片数据的接口:
第一种:以文件名形式直接导入图片
// i.e. Load(_T("mypic.gif"));
BOOL Load(LPCTSTR szFileName);
第二种:从全局内存区导入图片
// loads a picture from a global memory block (allocated by GlobalAlloc)
// Warning: this function DOES NOT free the global memory, pointed to by hGlobal
BOOL Load(HGLOBAL hGlobal, DWORD dwSize);
第三中:从MFC等导入程序的资源中导入
// loads a picture from a program resource
// i.e. Load(MAKEINTRESOURCE(IDR_MYPIC),_T("GIFTYPE"));
BOOL Load(LPCTSTR szResourceName,LPCTSTR szResourceType);
当然,这里我们选用第2种方式。
废话少说,大家看看,一起学习
发送端发送代码:
void SendData()
{
CFile file;
if(!file.Open(filename,CFile::modeRead | CFile::shareDenyWrite))
{
AfxMessageBox("打开文件失败");
return;
}
image.dwsize = dwSize = file.GetLength();
HGLOBAL hGlobal;
hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD,dwSize);//分配内存区
if(!hGlobal)
{
GetError();
AfxMessageBox("分配内存空间失败");
file.Close();
return ;
}
//锁定分配内存块
char *pData = reinterpret_cast<char*>(GlobalLock(hGlobal));//reinterpret_cast是强制类型转换
if(!pData)
{
GetError();
file.Close();
GlobalFree(hGlobal);
AfxMessageBox("锁内存失败");
return;
}
try
{
file.Read(pData,dwSize);//这个很重要哦
}catch(CFileException e)
{
GlobalFree(hGlobal);
file.Close();
AfxMessageBox("读取文件失败");
}
file.Close();
sendto(cltsocket,pData,dwSize,0,(SOCKADDR*)&srvaddr,sizeof(SOCKADDR));
GetError();
GlobalFree(hGlobal);
GlobalUnlock(hGlobal);
closesocket(cltsocket);
}
接收端接收线程:
UINT ThreadFun2(LPVOID pThreadParam)//用来接收数据
{
while(1)
{
CChBmpDlg *pdlg = (CChBmpDlg*)pThreadParam;
//pdlg->SetDlgItemText(IDC_STATIC_TIME,"收到图片数据");
//char recvbuf[55815];
//struct ChImage image;
char *pData;
SOCKADDR_IN cltaddr;
int len = sizeof(cltaddr);
HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_NODISCARD,45000);//分配内存空间(字节),类似于new、malloc
//pdlg->GetError();
pData = reinterpret_cast<char*>(GlobalLock(hGlobal));
recvfrom(srv_socket,pData,45000,0,(SOCKADDR*)&cltaddr,&len);
pdlg->SetDlgItemText(IDC_STATIC_TIME,"收到图片数据");
pdlg->m_Show.Load(hGlobal,45000);
pdlg->m_Show.Draw(1.0);
GlobalFree(hGlobal);
GlobalUnlock(hGlobal);
}
return 0;
}
- 用PictureEx类实现内存图片数据直接显示于picture控件
- 用picture控件显示图片之动态方法(使图片适应于控件大小)
- 将内存中的图片数据显示到Picture图片控件上
- 用CImage在picture控件上显示外部图片,并获取各像素颜色数据
- 使用picture控件动态显示图片方法
- MFC picture控件中显示图片
- MFC picture控件显示图片(新手)
- opencv mfc 显示图片到picture控件
- mfc picture控件显示png图片
- MFC实现的 picture control 类,对话框上显示图片
- VC中GDI+双缓冲实现Picture控件中显示png图片
- VC中GDI+双缓冲实现Picture控件中显示png图片
- 在 MFC 框架中,有什么方法能直接将 OpenCV 2.0 库中 Mat 格式的图片传递到 Picture Control(图片控件)显示?
- Picture控件显示jpg
- MFC利用CImage类将图片显示到Picture控件上
- 利用OpenCV在picture控件中显示图片
- opencv2.2 MFC picture控件中显示图片
- Picture控件显示图片保存为BMP,JPG等格式
- 看C#的笔记----一般网站还是C#简单
- 研究课题时间规划
- Android学习计划 & Android学习总结
- 7-Zip
- Java 网络编程之 (TCP服务器架构)
- 用PictureEx类实现内存图片数据直接显示于picture控件
- 测试
- 权限
- 新闻,商品推荐
- VC++远程控制软件的通信架构与源码分析
- 史上BT的排序算法
- 键盘钩子的类(VB.NET)
- 常用的抓取web实例
- Printf And Scalable Param in C Language (水滴石穿C语言之可变参数问题 )