Win32API中位图像素位的格式

本文介绍了在Win32API中处理位图时,像素矩阵的宽度是图片宽度的4倍,因为每个像素由4个值表示。通过一个水平镜像的示例,展示了如何正确地改变位图像素位,避免图片失真。理解像素矩阵的这一特性对于实现图像处理程序至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

毕设是关于图像处理方向的,不管以后用不用得到,反正碰到了,就认真做吧,说简单点,
无非就是特效显示,和对位图像素位进行操作

在这里插入图片描述

比如图片的水平镜像,先说说像素吧,位图都是由一个个像素点组成的,比如一张图片大小
为556*300,那么加载位图时,得到的宽为556,高为300,用API函数GetBitmapBits可以获取
像素位,不过需要值得注意的是,可以用BYTE *一维数组接收像素,在内存中是这样的(比如
图片大小为3*4)

在这里插入图片描述

然后在矩阵中,行数(从上到下)是图片的高,而列数(从左到右)是图片的宽*4,即每4个值表示一个像素点,所以改变位图像素位时就需要注意了
下面是水平镜像函数

//===============函数定义=====================
//图像的水平镜像
void horMirror(HDC hdc, HDC hMemDC, HBITMAP hBitmap, int Width, int Heigh)
{

	BITMAP bm;
	GetObject(hBitmap, sizeof(bm), &bm);
	int WidthRow = bm.bmWidthBytes;//原位图的字节宽(即原位图的每行字节数)
	//调试时会发现WidthRow为Width*4

	//获取原位图的像素位
	BYTE *Pixel = new BYTE[WidthRow*Heigh];
	GetBitmapBits(hBitmap, WidthRow*Heigh, (LPVOID)Pixel);

	BYTE *newPixel = new BYTE[Width
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值