GC绘图:异或 (XOR) 与高级模式

方法 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值