HEX值为其透明色

时间:2014-07-31 01:21:13

标签: c++ colors

我知道如何使用C ++中给定的R,G,B值创建颜色的十六进制代码。我的代码是:

#define COLOR_RGBA(%1,%2,%3,%4) (((((%1) & 0xff) << 24) | (((%2) & 0xff) << 16) | (((%3) & 0xff) << 8) | ((%4) & 0xff)))

生成颜色HEX 00FF005A(透明度为%90)。有时我没有颜色的R,G,B值,所以应该有另一种方式。我试过了:

the_hex_color | 00 & 0xff

但它没有工作,并给了我与我提供的相同的输出。

如何在不需要R,G,B值的情况下找到颜色的透明度HEX?我是否必须将其转换回R,G,B值?

1 个答案:

答案 0 :(得分:0)

如果你有一个完整的值并且你只想在0xff处提取部分,那么你需要通过这样做来掩盖它:

the_hex_color & 0xff

您使用按位运算符或运算符执行的操作不起作用,因为OR将所有位组合到结果中。


编辑 - 现在我明白了所需要的:只影响透明度字节或将其清零。

将一个字节清零可以使用带掩码的AND来提取其他所有内容:

color_transparent = original_color & 0xffffff00

更进一步,如果您想要一种方法将颜色的透明度更新为不同的值,那么在AND操作之后,您可以组合(OR)所需的值:

updated_color = (original_color & 0xffffff00) | new_transparency_value