我已经读过,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的用法是什么?
答案 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