将十六进制值设置为其透明颜色 我知道如何在C++中用给定的R、G、B值创建颜色的十六进制代码。我的代码是: #define COLOR_RGBA(%1,%2,%3,%4) (((((%1) & 0xff) << 24) | (((%2) & 0xff) << 16) | (((%3) & 0xff) << 8) | ((%4) & 0xff)))

将十六进制值设置为其透明颜色 我知道如何在C++中用给定的R、G、B值创建颜色的十六进制代码。我的代码是: #define COLOR_RGBA(%1,%2,%3,%4) (((((%1) & 0xff) << 24) | (((%2) & 0xff) << 16) | (((%3) & 0xff) << 8) | ((%4) & 0xff))),c++,colors,C++,Colors,但它不起作用,给了我与我提供的相同的输出 如何在不需要R、G、B值的情况下找到颜色的透明度十六进制?我必须将其转换回R、G、B值吗?如果您有一个完整的值,并且只想提取0xff处的零件,则需要通过执行以下操作将其屏蔽: the_hex_color & 0xff 使用按位or运算符所做的操作不起作用,因为or将所有位合并到结果中 编辑-现在我了解了需要什么:只影响透明度字节或将其归零 将一个字节归零可以通过使用和使用掩码来提取所有其他内容: color_transparent = ori

但它不起作用,给了我与我提供的相同的输出


如何在不需要R、G、B值的情况下找到颜色的透明度十六进制?我必须将其转换回R、G、B值吗?

如果您有一个完整的值,并且只想提取0xff处的零件,则需要通过执行以下操作将其屏蔽:

the_hex_color & 0xff
使用按位or运算符所做的操作不起作用,因为or将所有位合并到结果中


编辑-现在我了解了需要什么:只影响透明度字节或将其归零

将一个字节归零可以通过使用和使用掩码来提取所有其他内容:

color_transparent = original_color & 0xffffff00
更进一步,如果您想将颜色的透明度更新为不同的值,则在AND操作后,您可以组合(或)为所需的值:

updated_color = (original_color & 0xffffff00) | new_transparency_value

宏参数必须是标识符。我确实解决了使用
original|u color|0x00000000
updated_color = (original_color & 0xffffff00) | new_transparency_value