从位图数据取得位图句柄

#include <windows.h>
#include <fstream>
using namespace std;

void main()
{
	ifstream infile("bm.bmp", ios::in | ios::binary);
	
	BITMAPFILEHEADER bmpHeader;
	// 获取文件大小
	infile.seekg(0, ios::end);
	long nfilelen = infile.tellg();
	infile.seekg(0, ios::beg);

	// 读取文件头
	infile.read((char*)&bmpHeader, sizeof(bmpHeader));
	if (bmpHeader.bfType != 0x4d42)
		return ;

	// 占用一块内存
	HGLOBAL hDIB = GlobalAlloc(GMEM_FIXED, nfilelen);
	if (hDIB == 0)
		return ;
	
	// 把文件写入DIB
	infile.read((char*)hDIB, nfilelen - sizeof(BITMAPFILEHEADER));

	// 锁定内存, 位图信息指向该内存
	// BITMAPINFO == 位图信息头 + 调色板
	BITMAPINFO &bmpInfo = *(BITMAPINFO*)GlobalLock(hDIB);
	// 位图信息头指向该内存
	// BITMAPINFOHEADER *pInfoHead = (BITMAPINFOHEADER*)hDIB;

	// 位图信息头大小
	// int nHeadSize = sizeof(BITMAPINFOHEADER);
	// 获取颜色数组
	BYTE *pBmpPixelBuffer=(BYTE *)&bmpInfo + bmpHeader.bfOffBits - sizeof(BITMAPFILEHEADER);
	
	HDC hDC
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值