博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<转>显示图片汇总
阅读量:6999 次
发布时间:2019-06-27

本文共 4163 字,大约阅读时间需要 13 分钟。

1、用Picture控件显示图片

1、首先添加Picture控件,ID为IDC_IMG_BTM

2、定义 CBitmap* m_pBitmap;
3、导入图片,并定义ID为IDB_TEST_IMG
4、动态加载代码如下:
 CStatic* pImage = (CStatic*)GetDlgItem(IDC_IMG_BTM);
m_pBitmap = new CBitmap;
m_pBitmap->LoadBitmap(IDB_TEST_IMG);    
pImage->SetBitmap(HBITMAP(*m_pBitmap));
5、最后别忘了delete m_pBitmap指针。
示例(可更改图片大小):

1 1、用Picture控件显示图片 2 1、首先添加Picture控件,ID为IDC_IMG_BTM 3 2、定义 CBitmap* m_pBitmap; 4 3、导入图片,并定义ID为IDB_TEST_IMG 5 4、动态加载代码如下: 6  CStatic* pImage = (CStatic*)GetDlgItem(IDC_IMG_BTM); 7 m_pBitmap = new CBitmap; 8 m_pBitmap->LoadBitmap(IDB_TEST_IMG);     9 pImage->SetBitmap(HBITMAP(*m_pBitmap));10 5、最后别忘了delete m_pBitmap指针。11 示例(可更改图片大小):

2、用DC显示图片

1 //创建DC     2 CClientDC dc(GetDlgItem(资源ID));     3 //获取图片内容     4 BITMAP bm;  5 CBitmap* hbmp = CBitmap::FromHandle(LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1))); 6 hbmp->GetBitmap(&bm); 7 CDC dcMem;      8 //创建兼容DC     9 dcMem.CreateCompatibleDC(&dc); 10 CBitmap *pOldBitmap=dcMem.SelectObject(hbmp);  11 CRect lRect;   12 //获取Static控件的大小范围  13 m_bt_1.GetClientRect(&lRect);    14 //在Static控件上显示位图       15 //判断是否需要调整到适合画布   16 dc.StretchBlt(lRect.left, lRect.top, lRect.Width()+100, lRect.Height()+100,17 &dcMem, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);   18 dc.SelectObject(pOldBitmap);

3、控件上显示图片

1  HBITMAP hbitmap; 2  //将pStatic指向要显示的地方 3  CStatic *pStatic = NULL; 4  //根据ID获取Static控件 5  pStatic=(CStatic*)GetDlgItem(IDC_BUTTON1); 6  //装载资源*.bmp 7  hbitmap=(HBITMAP)::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP1)); 8  CBitmap hbmp; 9  hbmp.Attach(hbitmap);10  //获取图片内容11  BITMAP bm;12  hbmp.GetBitmap(&bm);13  CDC dcMem;14  //创建兼容DC15  dcMem.CreateCompatibleDC(GetDC());16  CBitmap *pOldBitmap=(CBitmap*)dcMem.SelectObject(hbmp);17  CRect lRect;18  //获取Static控件的大小范围19  pStatic->GetClientRect(&lRect);20  //在Static控件上显示位图21  pStatic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),22   &dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);23  dcMem.SelectObject(&pOldBitmap);

用这种方法可以在按钮上绘制图片

4、用com显示图片

1 #include
2 #include
3 4 // lpstrFile:文件名(最好是包含路径在内) 5 // hWnd 6 // nScrWidth:输出图片的宽度 7 // nScrHeight:输出图片的高度 8 // nScrWidth、nScrHeight是输出图片的实际大小,换而言之是指缩放后的尺寸 9 10 HRESULT ShowPic(TCHAR *lpstrFile,HWND hWnd,int nScrWidth,int nScrHeight)11 {12 HDC hDC_Temp=GetDC(hWnd);13 14 IPicture* pPic ;15 IStream* pStm ;16 17 BOOL bResult ;18 19 HANDLE hFile=NULL ;20 DWORD dwFileSize,dwByteRead ;21 22 //打开硬盘中的图形文件 23 hFile=CreateFile(lpstrFile,GENERIC_READ,24 FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);25 26 if(hFile!=INVALID_HANDLE_VALUE)27 {28 dwFileSize=GetFileSize(hFile,NULL);29 //获取文件字节数 30 31 if(dwFileSize==0xFFFFFFFF)32 return E_FAIL ;33 }34 else 35 {36 return E_FAIL ;37 }38 39 40 //分配全局存储空间 41 HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,dwFileSize);42 LPVOID pvData=NULL ;43 44 if(hGlobal==NULL)45 return E_FAIL ;46 47 //锁定分配内存块 48 if((pvData=GlobalLock(hGlobal))==NULL)return E_FAIL ;49 50 ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);51 //把文件读入内存缓冲区 52 53 GlobalUnlock(hGlobal);54 55 CreateStreamOnHGlobal(hGlobal,TRUE,&pStm);56 57 //装入图形文件 58 bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);59 60 if(FAILED(bResult))61 return E_FAIL ;62 63 OLE_XSIZE_HIMETRIC hmWidth ;64 //图片的真实宽度 65 OLE_YSIZE_HIMETRIC hmHeight ;66 //图片的真实高度 67 pPic->get_Width(&hmWidth);68 pPic->get_Height(&hmHeight);69 70 if(hmWidth!=0) nScrHeight=(int)((long double)nScrWidth*hmHeight/hmWidth);71 //将图形输出到屏幕上(有点像BitBlt) 72 bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight,73 0,hmHeight,hmWidth,-hmHeight,NULL);74 75 pPic->Release();76 77 CloseHandle(hFile);78 //关闭打开的文件 79 80 if(SUCCEEDED(bResult))81 {82 return S_OK ;83 }84 else 85 {86 return E_FAIL ;87 }88 }

 

转载于:https://www.cnblogs.com/cwbo-win/articles/3408581.html

你可能感兴趣的文章
Asp.Net 常用代码-备用
查看>>
Android Studio代码调试大全
查看>>
记一次virtualbox和夜神模拟器冲突的问题
查看>>
面向对象之多态、多态性
查看>>
简单标签-JspFragment和invoke()方法
查看>>
【原创】驱动卸载之ControlService函数
查看>>
1578: [Usaco2009 Feb]Stock Market 股票市场
查看>>
前端基本功(七):javascript中的继承(原型、原型链、继承的实现方式)
查看>>
原生的Ajax实现
查看>>
收集的几个jQuery插件
查看>>
java SSM 框架 微信自定义菜单 快递接口 SpringMVC mybatis redis shiro ehcache websocket
查看>>
[Unity] Shader(着色器)输入输出和语义
查看>>
Flutter学习之Dart语言基础(构造函数)
查看>>
条形码设计软件BarTender实用教程——模板对象常见问题解答
查看>>
Mongo Connector for BI
查看>>
关于mysql里的concat
查看>>
wcf基础(笔记)
查看>>
设置Eclipse中的tab键为4个空格的完整方法
查看>>
玩坏的Bad Apple之Vim
查看>>
常见的移动端H5页面开发遇到的坑和解决办法
查看>>