mfc中使用bmp和png位图
2015-04-21 10:45
295 查看
#include <GdiPlus.h> #include <AtlImage.h> #pragma comment(lib,"gdiplus.lib") //全局对象 CImage m_Imagebmp; //bmp图片 Image * m_pImage; //png图片 //全局函数 //绘画背景 VOID DrawViewImage(CDC * pDC, CImage & BitImage, BYTE cbDrawMode); //绘画PNG图像 bool DrawImagePng(CDC * pDC, INT nXPos, INT nYPos); //加载 bmp文件 m_Imagebmp.Load(TEXT("res\\bmp\\VIEW_BACK.bmp")); //加载 png文件 CT2CW strFileName(TEXT("res\\png\\READY.png")); m_pImage=Image::FromFile((LPCWSTR)strFileName); //错误判断 if ((m_pImage==NULL)||(m_pImage->GetLastStatus()!=Ok)) { try { delete m_pImage; } catch (...) { ASSERT(FALSE); } m_pImage=NULL; return false; } //绘画界面 void CMyWindow::OnPaint() { CPaintDC dc(this); DrawViewImage(&dc,m_Imagebmp,DRAW_MODE_CENTENT); DrawImagePng(&dc,0,100); }
//绘画模式
#define DRAW_MODE_SPREAD 0 //平铺模式
#define DRAW_MODE_CENTENT 1 //居中模式
#define DRAW_MODE_ELONGGATE 2 //拉伸模式
//绘画模式
#define DRAW_MODE_SPREAD 0 //平铺模式
#define DRAW_MODE_CENTENT 1 //居中模式
#define DRAW_MODE_ELONGGATE 2 //拉伸模式
//绘画背景 VOID CMyWindow::DrawViewImage( CDC * pDC, CImage & BitImage, BYTE cbDrawMode ) { //获取位置 CRect rcClient; GetClientRect(&rcClient); //无效区域 CRect rcDirty; pDC->GetClipBox(&rcDirty); //绘画位图 switch (cbDrawMode) { case DRAW_MODE_SPREAD: //平铺模式 { //加载资源 INT nImageWidth=BitImage.GetWidth(); INT nImageHeight=BitImage.GetHeight(); //绘画位图 for (INT nXPos=0;nXPos<rcClient.right;nXPos+=nImageWidth) { for (INT nYPos=0;nYPos<rcClient.bottom;nYPos+=nImageHeight) { BitImage.BitBlt(pDC->m_hDC,nXPos,nYPos); } } return; } case DRAW_MODE_CENTENT: //居中模式 { //变量定义 INT nImageWidth=BitImage.GetWidth(); INT nImageHeight=BitImage.GetHeight(); //位置计算 INT nXPos=(rcClient.Width()-BitImage.GetWidth())/2; INT nYPos=(rcClient.Height()-BitImage.GetHeight())/2; //绘画位图 BitImage.BitBlt(pDC->m_hDC,nXPos,nYPos); return; } case DRAW_MODE_ELONGGATE: //拉伸模式 { //变量定义 INT nImageWidth=BitImage.GetWidth(); INT nImageHeight=BitImage.GetHeight(); //绘画位图 BitImage.StretchBlt(pDC->m_hDC,0,0,rcClient.Width(),rcClient.Height(),0,0,nImageWidth,nImageHeight); return; } } return; } //绘画图像 bool CMyWindow::DrawImagePng( CDC * pDC, INT nXPos, INT nYPos ) { //加载判断 ASSERT(m_pImage!=NULL); if (m_pImage==NULL) return false; //创建屏幕 ASSERT(pDC!=NULL); Graphics graphics(pDC->GetSafeHdc()); //获取属性 INT nImageWidth=m_pImage->GetWidth(); INT nImageHeight=m_pImage->GetHeight(); //构造位置 RectF rcDrawRect; rcDrawRect.X=(REAL)nXPos; rcDrawRect.Y=(REAL)nYPos; rcDrawRect.Width=(REAL)nImageWidth; rcDrawRect.Height=(REAL)nImageHeight; //绘画图像 graphics.DrawImage(m_pImage,rcDrawRect,0,0,(REAL)nImageWidth,(REAL)nImageHeight,UnitPixel); return true; }
//GDI+初始化 GdiplusStartupInput m_GdiplusStartupInput; ULONG_PTR m_GdiplusToken; ULONG_PTR token=GdiplusStartup(&m_GdiplusToken, &m_GdiplusStartupInput, NULL); //清除使用 GdiplusShutdown(token);
相关文章推荐
- win32SDK中使用bmp和png位图
- “为了能够访问动态链接库中的位图资源,在编译动态链接库时,需要使用MFC静态库”
- MFC 的 Picture Control 加载 BMP/PNG 图片的方法
- C++中使用CAtlHttpClient显示网络图片的方法,支持png,bmp,gif图片格式
- 使用CxImage进行图形和格式转换(CBitmap to jpg or png or gif or bmp)
- VC中使用MFC显示位图的方法
- C#中使用FreeImage库加载Bmp、JPG、PNG、PCX、TGA、PSD等25种格式的图像(源码)。
- 使用GDI+加载PNG(MFC)
- 使用vc显示bmp位图
- 有关MFC中使用CButton类后位图按钮闪烁的问题
- 使用MFC CImage类绘制PNG图片时遇到的问题
- XMU 数字图像处理实验3 VC MFC 读取位图BMP
- 9.png(9位图)在android中作为background使用导致居中属性不起作用的解决方法
- MFC使用自定义资源加载PNG
- PDFCreator:一款免费,开源的PDF(Tiff,pcx,png,jpeg,bmp,PS,EPS)打印机(VB,GPL),并提供了COM接口,方便使用各种编程语言调用
- 使用系统imgdecmp库解码JPG,GIF,PNG,BMP图片
- MFC项目中bmp图片改成png(网狐客户端)
- VS2013 MFC使用位图美化对话框
- 使用Excel的VBA来读取和修改bmp位图像素数据
- MFC绘图4--使用位图画刷