Warning: file_get_contents() [function.file-get-contents]: SSL: 远程主机强迫关闭了一个现有的连接。 in D:\wwwroot\huidong\wwwroot\function.inc.php on line 884

Warning: file_get_contents(https://whois.pconline.com.cn/jsLabel.jsp?ip=127.0.0.1) [function.file-get-contents]: failed to open stream: HTTP request failed! in D:\wwwroot\huidong\wwwroot\function.inc.php on line 884
显存中 16 个字节对应内容,解释 ARGB 通道 - huidong

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