1
这是关于从像素值中提取RGB的。以下是代码片段:C#WriteableBitmapEx像素预乘移位
Byte a = (Byte)(myColor >> 24);
// Prevent division by zero
UInt32 ai = a;
if (ai == 0)
{
ai = 1;
}
ai = ((255 << 8)/ai);
Byte bA = a;
Byte bR = (Byte)((((myColor >> 16) & 0xFF) * ai) >> 8);
Byte bG = (Byte)((((myColor >> 8) & 0xFF) * ai) >> 8);
Byte bB = (Byte)((((myColor & 0xFF) * ai) >> 8));
我明白技术上,即在水平位,和二进制是怎么回事。我特别理解'Byte b#=(Byte)((((myColor >> n)& 0xFF)'部分,我不明白的是预乘(我的意思是这里的实现,而不是理论),特别是我想了解 - 所以我的问题:
- 为什么255被8位右移,然后devided由阿尔法
- 为什么每个值乘的这一点,那么结果如何呢?向左移位8位?
什么是你想在这里做阅读起来的更多信息? – 2010-12-16 13:48:51
了解我的问题的代码? – descf 2010-12-16 14:48:56