颜色值如何使用 C++ 输出字符串格式?
//https://developer.android.com/reference/android/graphics/Color.html
//https://en.wikipedia.org/wiki/RGBA_color_model#Representation
union Color32
{
unsigned int color;
struct RGBA{ unsigned char r, g, b, a; } rgba;
struct ARGB{ unsigned char a, r, g, b; } argb;//
std::string toString() {
std::string rgba = "#";
rgba += n2hexstr<int>((int)this->argb.r,2);
rgba += n2hexstr<int>((int)this->argb.g,2);
rgba += n2hexstr<int>((int)this->argb.b,2);
rgba += n2hexstr<int>((int)this->argb.a,2);
return rgba;
}
private:
template <typename I> std::string n2hexstr(I w, size_t hex_len = sizeof(I) << 1) {
static const char* digits = "0123456789ABCDEF";
std::string rc(hex_len, '0');
for (size_t i = 0, j = (hex_len - 1) * 4; i < hex_len; ++i, j -= 4)
rc[i] = digits[(w >> j) & 0x0f];
return rc;
}
};
std::ostream& operator << (std::ostrea

这段代码展示了如何在C++中将颜色值转换为字符串格式,并提供了输出RGB和ARGB组件的函数。`Color32`联合体用于存储颜色值,`toString()`方法生成包含RGB/ARGB十六进制表示的字符串。此外,还定义了两个友元运算符用于输出RGBA和ARGB结构体,以及一个用于输出`Color32`整型颜色值的友元运算符。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



