匯東網


显存中 16 个字节对应内容,解释 ARGB 通道

[編輯] [转简体]
|
作者:huidong | 分類:【編程】EasyX
[ 26 瀏覽 0 評論 13 贊 11 踩 ]

概要

正文

显存是以 DWORD* 的形式存储的,也就相当于 int*。

一个 int 变量占 16 个字节,每 4 个字节存储一个颜色信息。

对于 png 图片来说,加载进来以后,每个像素对应 4 个字节,存储内容为 aabbggrr,也就是 ABGR。

其中,aa 表示透明度,如果为 0,表示完全透明;如果为 ff,表示完全不透明。


https://qa.codebus.cn/question/2243?answerId=1892 


将 png 显存信息读入后,如需判定 RGB 色彩,应先将 aa 部分信息剔除,再使用 BGR 宏将色值转为 RGB 进行判断,也就是这样:

DWORD* buf = GetImageBuffer();
COLORREF c = BGR(buf[y * w + x] & 0x00FFFFFF);


因为 0xF(15)在二进制中是 1111(2^0 + 2^1 + 2^2 + 2^3 = 15),所以 0x00FFFFFF 也就是 0000 0000 1111 1111 1111 1111 1111 1111

这样在做与运算时,就可以将 aa 信息剔除了。





[ 13] [ 11]


 評論區  0 條評論

+ 添加評論