显存中 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 信息剔除了。