0

我有 CMYK 颜色值 ( 0, 0.58 ,1 ,0 )。现在我必须使用 C# 转换为其等效的整数。我认为可以使用按位运算符,但不确定。

请帮助我如何实现相同的目标。

谢谢,帕万

4

1 回答 1

2

尝试这个:

float c = 0.0;
float y = 0.58;
float m = 1.0;
float k = 0.0;

uint intColor = (uint)(c * 255) << 24;
intColor += (uint)(y * 255) << 16;
intColor += (uint)(m * 255) << 8;
intColor += (uint)(k * 255) << 0;

这里intColor将是一个 32 位无符号整数,分别包含颜色的 C、Y、M 和 K 分量的字节值。要从整数转换回分量,只需反转所有操作及其顺序:

float c = ((intColor & 0xFF000000) >> 24) / 255.0f;
float y = ((intColor & 0x00FF0000) >> 16) / 255.0f;
float m = ((intColor & 0x0000FF00) >> 8) / 255.0f;
float k = ((intColor & 0x000000FF) >> 0) / 255.0f;
于 2012-09-02T07:50:02.950 回答