Top-Down vs. Bottom-Up DIBs

本文介绍了位图在内存中的两种存储方式:Top-Down和Bottom-Up,并解释了这两种方式的区别及应用场景。对于Bottom-Up位图,图像从底部开始存储;而Top-Down位图则从顶部开始存储。文章还提到了这两种位图类型如何通过BITMAPINFOHEADER结构中的biHeight成员进行区分。

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

Top-Down vs. Bottom-Up DIBs

摘自MSDN翻译

如果你是刚刚接触图形编程的人员,可能会认为一个位图是一行一行从顶往底按顺序保存在内存地址中。然而,不是所有的位图都是用如此方式来保存。在Windows系统中,DIB位图有两种不同方向的保存方式:Top-Down 和Bottom-Up。
对于Bottom-Up位图,在内存中是从位图的底部行开始保存,然后一行接着一行,直到位图顶部,所以顶部是保存在内存空间的结束。因而,图像的左下角像素点保存在内存空间的开始处。在GDI中,所有的位图都是Bottom-Up类型的位图。在物理内存中的Bottom-Up位图保存示意图如下所示,

5*6 ARGB 32位位图
图1 5*6 ARGB 32位位图

说明:在实际应用中,unused的大小是不固定的,它取决于图像硬件或一些其他因素。在某些情况下,这个值可能是0。
实际图像
图2 位图在内存中实际保存样式,它是倒立的

对于Top-Down位图,它在内存中的保存顺序是相反的。位图的顶部行保存在内存空间的开始处,然后一行接着一行,底部行保存在内存空间的结尾处。因而,图像的左上角保存在内存空间的开始处。DirectDraw编程采用是Top-Down类型位图。在物理内存中的Top-Down位图保存示意图如下所示,
Top-Down
图3 Top-Down位图

这里写图片描述
图4 位图在内存中实际保存样式,它是正立的

这是代表两种不同的图片压缩方法,可以在位图结构体中设置, 例如 BITMAPINFOHEADER参数中biHeight成员设置为TRUE,则表示Bottom-Up类型,反之为Top-Down类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值