XORing颜色及其用途?

时间:2011-03-31 10:48:39

标签: c# winforms

我已经读过,xor b是:(a.(not)b + (not)a.b)且明确(a xor a)=0 or False

所以真相表是:

a|b|a xor b
-----------
0|0|   0   
0|1|   1   
1|0|   1   
1|1|   0   

完成上述所有操作后,颜色的xor操作是什么。我知道颜色是十六进制数。

BkColor参数中ControlPaint.DrawReversibleLine的用法是什么?

2 个答案:

答案 0 :(得分:1)

首先你的真相表是错误的:

它给出一个!= b,否则为0。

其次,图形中使用的点是(至少在Pascal中)你可以绘制一个形状,每个像素的颜色将是Original_pixel_color XOR shape_color。如果这样做两次,形状就会消失,因为双倍XOR会为您提供原始输入。

我用它,例如当我在简单的图形编辑器中绘制东西时。使用鼠标创建对象时,您只需使用此特殊XOR用法绘制它,而无需记住背景,因为您可以通过再次绘制它来擦除它(例如,当调整大小或移动鼠标拖动对象时)。 p>

希望这会有所帮助:)

答案 1 :(得分:1)

颜色的每个位都是单独的XOR编辑。这通常意味着8位红色,8位绿色,8位蓝色,并且在一种颜色中,每位的价值是旁边的一半。

因此,例如,浅灰色XOR红色会产生一种海蓝色:

R        G        B            R        G        B         R        G        B
CC       CC       CC       XOR FF       00       00      
11001100 11001100 11001100  ^  11111111 00000000 0000000 = 00110011 11001100 11001100
                                                           33       CC       CC