huidong

首页 | 会员登录 | 关于争取 2022 寒假做出汇东网 Ver3.0.0 !
搜索文章


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







返回首页


Copyright (C) 2018-2024 huidong