使用CStatic显示图片(bmp、ico、png)
2016-09-25 20:00
501 查看
一、显示bmp及ico
显示ICO和BMP是一个道理,函数改成LoadIcon 、SetIcon等就行了
二、路径动态加载方式显示PNG
三、静态加载资源方式显示PNG
其中LoadImageFromIDResource实现函数如下:
//h文件 CStatic m_static; //cpp文件 CBitmap bitmap; bitmap.LoadBitmapW(IDB_BITMAP); //加载位图 BITMAP bmp; bitmap.GetBitmap(&bmp); //获取位图参数 CRect rect(10,10,10+bmp.bmWidth,10+bmp.bmHeight); //显示区域 m_static.Create(L"",WS_CHILD | SS_BITMAP | SS_CENTERIMAGE,rect,this,12345); //创建static //关联控件和位图,其中 IDB_BITMAP 是加载的位图资源ID号 m_static.SetBitmap(::LoadBitmap(AfxGetApp()->m_hInstance, MAKEINTRESOURCE(IDB_BITMAP))); m_static.ShowWindow(true);
显示ICO和BMP是一个道理,函数改成LoadIcon 、SetIcon等就行了
二、路径动态加载方式显示PNG
//h文件 #include "atlimage.h" CStatic m_static; //cpp文件 CImage image; image.Load(_T("res/node.png")); //以相对路径加载PNG图片 HBITMAP hBmp = image.Detach(); CRect rect(50,50,50+image.GetWidth(),50+image.GetHeight()); m_static.Create(L"", SS_BITMAP | SS_CENTERIMAGE,rect,this,12346); m_static.SetBitmap(hBmp); m_static.ShowWindow(true);
三、静态加载资源方式显示PNG
//h文件 #include "atlimage.h" CStatic m_static; //cpp文件 CImage image; LoadImageFromIDResource(&image,IDB_PNG,_T("PNG")); //自定义函数加载资源 HBITMAP hBmp = image.Detach(); CRect rect(50,50,50+image.GetWidth(),50+image.GetHeight()); m_static.Create(L"", SS_BITMAP | SS_CENTERIMAGE,rect,this,12346); m_static.SetBitmap(hBmp); m_static.ShowWindow(true);
其中LoadImageFromIDResource实现函数如下:
BOOL LoadImageFromIDResource(CImage *pImage, UINT nResID,LPCTSTR lpTyp) { if ( pImage == NULL) return false; pImage->Destroy(); // 查找资源 HRSRC hRsrc = ::FindResource(AfxGetResourceHandle(), MAKEINTRESOURCE(nResID), lpTyp); if (hRsrc == NULL) return false; // 加载资源 HGLOBAL hImgData = ::LoadResource(AfxGetResourceHandle(), hRsrc); if (hImgData == NULL) { ::FreeResource(hImgData); return false; } // 锁定内存中的指定资源 LPVOID lpVoid = ::LockResource(hImgData); LPSTREAM pStream = NULL; DWORD dwSize = ::SizeofResource(AfxGetResourceHandle(), hRsrc); HGLOBAL hNew = ::GlobalAlloc(GHND, dwSize); LPBYTE lpByte = (LPBYTE)::GlobalLock(hNew); ::memcpy(lpByte, lpVoid, dwSize); // 解除内存中的指定资源 ::GlobalUnlock(hNew); // 从指定内存创建流对象 HRESULT ht = ::CreateStreamOnHGlobal(hNew, TRUE, &pStream); if ( ht != S_OK ) { GlobalFree(hNew); } else { // 加载图片 pImage->Load(pStream); GlobalFree(hNew); } // 释放资源 ::FreeResource(hImgData); return true; }
相关文章推荐
- 使用CStatic显示图片(bmp、ico、png)
- C++中使用CAtlHttpClient显示网络图片的方法,支持png,bmp,gif图片格式
- C++中使用CAtlHttpClient显示网络图片的方法,支持png,bmp,gif图片格式
- SWT图片显示,支持JPEG,GIF(动画),BMP,ICO,PNG和TIFF
- 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)
- SWT图片显示,支持JPEG,GIF(动画),BMP,ICO,PNG和TIFF
- 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)
- 使用IPicture接口读取和显示BMP,GIF,JPG,ICO,EMF,WMF图像
- 使用CImage显示透明的PNG图片
- vc6.0使用gdi+在内存中绘图并将其保存为bmp,jpg,gif,png等格式的图片
- 使用Picture Control显示BMP图片
- 使用 iimage 调用本地图片 并显示出来 支持 jpeg png
- 使用IPicture接口读取和显示BMP,GIF,JPG,ICO,EMF,WMF图像
- 使用IPicture接口读取和显示BMP,GIF,JPG,ICO,EMF,WMF图像 (转)
- wince下IImage接口的使用,处理jpeg、bmp、png等格式图片
- 解决使用了DD_belatedPNG后,图片显示不全,只显示一部分
- VC6.0中使用Stream Object读取数据中流文件并显示Bmp,JPG等图片
- Windows Mobile 上显示png,jpg,bmp等图片
- WinCE5.0的 Imaging API 显示JPG BMP PNG 图片问题
- 使用libpng显示外部png图片