Java SWT - 画布上的透明背景?

时间:2015-05-25 11:12:56

标签: java canvas swt

是否可以在绘制的图像上填充矩形和椭圆形,并使椭圆形成为"窗口"它背后的形象?

e.gc.drawImage(//...);
e.gc.setBackground(//black);
e.gc.fillRectangle(//over the image);
e.gc.setBackground(//SWT.TRANSPARENT?);
e.gc.fillOval(somewhere on the canvas);

这个片段显然不适合我,但这可以通过SWT实现吗?

2 个答案:

答案 0 :(得分:1)

我设法做到了,

我所做的是使用SWT.NO_TRIM属性创建一个新shell(它的父级是canvas / costume小部件)并在其上使用setRegion()

诀窍是区域本身,它有一个subtract()方法, 所以我找到了一个生成多边形的方法,并从区域中减去它。

比我设定它和vo。 我不得不添加resize并移动监听器,使其看起来“自然”(即画布的一部分,而不是新的shell)。

实际上效果非常好。

答案 1 :(得分:0)

使用fillOval()fillRectangle()来绘制轮廓而不是填充区域,而不是使用drawOval()drawRectangle()

这是JavaDoc

  

使用前景色在指定的矩形区域内绘制椭圆的轮廓

fillOval()确实:

  

使用接收器的背景颜色填充指定矩形区域内的椭圆的内部