是否可以在绘制的图像上填充矩形和椭圆形,并使椭圆形成为"窗口"它背后的形象?
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实现吗?
答案 0 :(得分:1)
我设法做到了,
我所做的是使用SWT.NO_TRIM属性创建一个新shell(它的父级是canvas / costume小部件)并在其上使用setRegion()
。
诀窍是区域本身,它有一个subtract()
方法,
所以我找到了一个生成多边形的方法,并从区域中减去它。
比我设定它和vo。 我不得不添加resize并移动监听器,使其看起来“自然”(即画布的一部分,而不是新的shell)。
实际上效果非常好。
答案 1 :(得分:0)
使用fillOval()
和fillRectangle()
来绘制轮廓而不是填充区域,而不是使用drawOval()
和drawRectangle()
。
这是JavaDoc:
使用前景色在指定的矩形区域内绘制椭圆的轮廓。
fillOval()
确实:
使用接收器的背景颜色填充指定矩形区域内的椭圆的内部。