方法 setXORMode(true) 的作用是使得目标颜色是源和目标颜色进行异或操作 (XOR) 所得到的结果值。
当参数为 false 时,则取消了绘图的异或效果。
在使用 setXORMode 之前,应该使用 setBackground/setForeground 等方法来设定背景色或者前景色。
另外,我们不可以把 setAntialias 或者 setTransform 等跟该方法一起使用,否则你会惊讶地发现使用 setXORMode 并没有达到你想要得效果。为什么呢?这是因为使用 setAntialias 或者 setTransform 等方法之后,高级图像模式被自动的调用,你可以使用 setAdvance(false) 将模式切换至普通模式之后再调用 setXORMode 方法。
eg:
XOR失效示例:
gc.setBackground (display.getSystemColor (SWT.COLOR_BLUE)); gc.fillRectangle (0, 0, 60, 60); gc.setAntialias (SWT.OFF);// 调用了 setAntialias gc.setXORMode (true); gc.setBackground (display.getSystemColor (SWT.COLOR_YELLOW)); gc.fillRectangle (20, 20, 80, 80); gc.dispose ();
gc.setBackground (display.getSystemColor (SWT.COLOR_BLUE)); gc.fillRectangle (0, 0, 60, 60); gc.setAntialias (SWT.OFF);// 调用了 setAntialias gc.setXORMode (true); gc.setBackground (display.getSystemColor (SWT.COLOR_YELLOW)); gc.fillRectangle (20, 20, 80, 80); gc.dispose (); |
值得注意的是, 在部分平台上并不支持 setXORMode,因此在开发具有可移植性的程序时, 要谨慎使用setXORMode。