位图显示
2015-07-04 00:24
218 查看
读位图资源并显示
读取位图文件并显示
装入位图文件并显示位图
// 准备设备dc
CClientDC *pDC=new CClientDC(this);
// 加载位图文件
CBitmap Bitmap;
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,"./res/100.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
// 获得位图对象
Bitmap.Attach(hBitmap);
// 准备内存dc
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&Bitmap);
// 获得位图信息
BITMAP bmInfo;
Bitmap.GetObject(sizeof(bmInfo),&bmInfo);
// 贴图
pDC->BitBlt(0,0,bmInfo.bmWidth,bmInfo.bmHeight, &memDC, 0,0,SRCCOPY);
//1、准备设备dc CClientDC *pDC = new CClientDC(this); //2、准备内存dc CDC memDC; memDC.CreateCompatibleDC(pDC); //3、加载资源位图 CBitmap bmp; bmp.LoadBitmap(IDB_BITMAP1); //4、将资源位图选进内存dc HGDIOBJ hOldBmp = memDC.SelectObject(bmp.m_hObject); //5、贴图(内存dc贴到设备dc) CRect rtClient; GetClientRect(rtClient); pDC->BitBlt(0,0,rtClient.Width(),rtClient.Height(),&memDC, 0,0,SRCCOPY); //6、清除GDI对象 memDC.SelectObject(hOldBmp); memDC.DeleteDC(); bmp.DeleteObject(); if (pDC) { delete pDC; pDC = NULL; }
读取位图文件并显示
// 打开位图 CFile file; if (!file.Open("./res/bitmap1.bmp",CFile::modeRead|CFile::typeBinary)) return; // 读取位图文件头 BITMAPFILEHEADER bmpHeader; if (file.Read(&bmpHeader,sizeof(bmpHeader)) != sizeof(bmpHeader)) goto end; if (bmpHeader.bfType != 0x4d42) goto end; // 读取位图信息头 BITMAPINFOHEADER bmpInfo; if (file.Read(&bmpInfo, sizeof(bmpInfo)) != sizeof(bmpInfo)) goto end; // 获取位图信息 BITMAPINFO *pBitmap = (BITMAPINFO*)new char[sizeof(BITMAPINFOHEADER)]; if (!pBitmap) goto end; memcpy(pBitmap,&bmpInfo,sizeof(BITMAPINFOHEADER)); // 获取位图数据 DWORD dwDatas = bmpHeader.bfSize - bmpHeader.bfOffBits; BYTE *pbmpData = new BYTE[dwDatas]; if (!pbmpData) { delete pBitmap; pBitmap = NULL; goto end; } if (file.Read(pbmpData,dwDatas) != dwDatas) { delete pBitmap; delete pbmpData; pBitmap = NULL; pbmpData = NULL; } // 贴图 CClientDC *pDC = new CClientDC(this); // 设置设备环境中位图的拉伸模式(COLORONCOLOR:该模式删除所有消除的像素行,不保留其信息) pDC->SetStretchBltMode(COLORONCOLOR); CRect rtClient; GetClientRect(rtClient); StretchDIBits(pDC->GetSafeHdc(),0,0,rtClient.Width(),rtClient.Height(), 0,0,bmpInfo.biWidth,bmpInfo.biHeight,pbmpData,pBitmap,DIB_RGB_COLORS,SRCCOPY); end: file.Close(); if (pBitmap) delete pBitmap; if (pbmpData) delete pbmpData; pBitmap = NULL; pbmpData = NULL;
装入位图文件并显示位图
// 准备设备dc
CClientDC *pDC=new CClientDC(this);
// 加载位图文件
CBitmap Bitmap;
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL,"./res/100.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
// 获得位图对象
Bitmap.Attach(hBitmap);
// 准备内存dc
CDC memDC;
memDC.CreateCompatibleDC(pDC);
memDC.SelectObject(&Bitmap);
// 获得位图信息
BITMAP bmInfo;
Bitmap.GetObject(sizeof(bmInfo),&bmInfo);
// 贴图
pDC->BitBlt(0,0,bmInfo.bmWidth,bmInfo.bmHeight, &memDC, 0,0,SRCCOPY);
相关文章推荐
- UVA 246 10-20-30 10-20-30游戏 模拟+STL双端队列deque
- c++异常处理,,,同时处理除数为0以及开根号内部不能小于0
- 【C++ Primer Plus学习笔记】第二章:一个函数的基本的组成
- Java 泛型解析,太难了,认真读才能理解
- UDP协议程序设计中的几个问题
- 2015070306 - EffactiveJava笔记 - 第55条 谨慎地进行优化(2)
- bolg迁移
- 10001-Java集合--概述
- 活动推荐 | 听说 PHP 是最好的语言 - 和 OneAPM 一起参与上海 PHPCon 技术盛宴吧
- LeetCode Summary Ranges(简单的数组处理)
- FP-Growth算法之FP-tree的构造(python)
- 使用爬虫获取彩票开奖结果
- FP-Growth算法之FP-tree的构造(python)
- TextView 活动切换
- XenApp_XenDesktop_7.6实战篇之十六:安装Virtual Delivery Agent For Windows Server OS
- XenApp_XenDesktop_7.6实战篇之十六:安装Virtual Delivery Agent For Windows Server OS
- poj 3071 Football 概率dp
- 黑马程序员----java中的多线程基础
- 从今天开始
- sql 纪录