名字看上去貌似和求色彩的补一样
网络上的数学方法分别是:(原文http://hi.baidu.com/graydeer/blog/item/300a94513367502443a75b33.html)
反色:
CNew = 255 - COld
补色:
CNew = Max(R,G,B) + Min(R,G,B) - COld
其实如果对“反”和“补”的关键敏感的计算机同学来说很容易联想到某方法:
反色:
CNew = ~ COld
补色:
CNew = ~COld +1
看上是不是很简单阿? 哈哈,但下面的补色算法却是不正确的,知道为什么么?
那就是在计算机中的色彩数值都当无符号数处理了。。。。。。。。 可惜啊,所以只能当第一种方式处理了......
啊?你和我说ByteArray? 哈哈....偶就快倒下了。。。。。。。。
以下为actionscript3 测试代码:
- var a:Shape = new Shape();
- a.graphics.beginFill(0x183700)
- a.graphics.drawRect(0, 0, 50, 50);
- a.graphics.endFill();
- var b:Shape = new Shape();
- b.graphics.beginFill(~0x183700)
- b.graphics.drawRect(0, 0, 50, 50);
- b.graphics.endFill();
- b.x = 100;
- var c:Shape = new Shape();
- c.graphics.beginFill(~0x183700+1)
- c.graphics.drawRect(0, 0, 50, 50);
- c.graphics.endFill();
- c.x = 200;
- addChild(a);
- addChild(b);
- addChild(c)
