方法 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。
本文介绍了SWT中setXORMode方法的作用及注意事项,包括如何设置绘图的异或效果,以及该方法与其他绘图配置的兼容性问题。文章还提醒开发者在跨平台开发时要注意某些平台可能不支持此功能。
604

被折叠的 条评论
为什么被折叠?



