c# - 为每像素 C# 加入 16 位颜色
问题描述
我有一个问题,我有一种颜色(RGB),每种颜色用 16 位分隔,我想加入 64 位,例如:
R = 0x2222
G = 0xb1b1
B = 0x4c4c
A = 0x0000
如何将其转换为单个数据?
解决方案
这有点重复这个问题,但它确实有一个独特的事情让你感到困惑,因为否则你会左移超过 32 位,而 C# 莫名其妙地只服从移位量中较低的 5 或 6 位。因此,结合这两个事实:
void Main()
{
ushort r = 0x2222;
ushort g = 0xb1b1;
ushort b = 0x4c4c;
ushort a = 0x0000;
ulong rgba = r;
rgba = rgba << 16; // each component is 16 bits long
rgba = rgba | g;
rgba = rgba << 16;
rgba = rgba | b;
rgba = rgba << 16;
rgba = rgba | a;
Console.WriteLine($"{rgba:X}");
}
推荐阅读
- javascript - 更新对象 Javascript 中的单个字段
- javascript - JS编辑CSS像素值
- python - 如何以 Python 方式测试是否在 Python 中使用某个参数调用函数?
- html - 如何在 CSS 中定位圆形图像?
- php - 如何解决未捕获的类型错误:PHP 中不支持的操作数类型....
- reverse-engineering - 将函数符号从 symtab 导出到 dynsym
- javascript - Chartist 插件 tooltip 和 pointlabels 如何自定义
- autohotkey - Autohotkey 使用特殊功能键
- sql - 为了只接收 2015-2021 年之间的数据,我应该添加哪一行代码?
- javascript - Mozilla localStorage.getItem 基于唯一密钥的部分知识