VC显示Bitmap图片的备忘

显示位图是 Windows 的工作基础,基础得连全世界最喜欢说废话的微软帮助文档撰写人员都认为是废话懒得多说。正因为资料很少,初次接触者难免一头雾水。终于搞懂之后,赶紧写个备忘。

要显示图片,首先你的内存里要有图片。

WinAPI 函数 LoadBitmap 只能从可执行文件的资源里加载位图,由于未压缩的位图非常占用空间,很少人把位图直接放在资源里。

WinAPI 的函数 LoadImage 可以从磁盘上读入文件:

HBITMAP hBitmap=(HBITMAP)LoadImage(NULL, TEXT(“C:\\我的\\位图.bmp”), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);

如果成功,得到的结果是一个句柄,句柄表示被操作系统直接管理的对象。操作系统采用了类似数据库的方式来管理各种对象,句柄就相当于数据库记录的主键,操作系统管理进程通过索引之类的技术,能极快地通过句柄定位到对象的内存位置。这种拥有句柄的对象保存在管理进程的地址空间内,用户进程是无法触及的。

有了图片的句柄,怎么把他显示出来呢?根据微软公司的设计,你得把他关联到一个临时 DC 上去,然后把临时 DC 的画面拷贝到屏幕 DC 上去,
HDC hMemDC = CreateCompatibleDC(NULL);
SelectObject(hMemDC, hBitmap);
BitBlt(GetDC(hWnd) , 目标位置x坐标, 目标位置y坐标, 图像宽度, 图像高度, hMemDC, 复制起点x坐标, 复制起点y坐标, SRCCOPY);

这样图片就显示出来了。如果使用 StretchBlt 还能缩放图片,

StretchBlt(目标DC, 目标x坐标, 目标y坐标, 目标图像

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值