JavaSWT-画布上的透明背景?
有没有可能在绘制的图像上填充一个矩形和一个椭圆形,并使椭圆形成为后面图像的“窗口”JavaSWT-画布上的透明背景?,java,canvas,swt,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实现吗 不要使用fillOval()和
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实现吗 不要使用
fillOval()
和fillRectangle()
,而是使用drawOval()
和drawRectangle()
绘制轮廓,而不是填充区域
以下是:
使用前景色在指定的矩形区域内绘制椭圆形的轮廓
而fillOval()
的作用是:
用接收器的背景色填充指定矩形区域内椭圆形的内部
我设法做到了
我所做的是使用SWT.NO_TRIM属性创建一个新的shell(它的父对象是canvas/costude小部件),并在其上使用setRegion()
诀窍是区域本身,它有一个subtract()
方法,
所以我找到了一种生成多边形的方法,并从区域中减去它
然后我把它放好,瞧。
我必须添加调整大小和移动侦听器,使其看起来“自然”(即,画布的一部分,而不是新的shell)
实际上它工作得很好。是的,我知道这些选项,我应该提到矩形必须覆盖图像,而椭圆形必须是透明的。@omm118好的,然后使用
fillRectangle()
和drawOval()
@omm118,还是要“删除”椭圆形矩形的部分?如果我使用fillRectangle和than-drawOval,椭圆形的背景就是矩形,如果我使用drawOval和than-fillRectangle,矩形也会覆盖椭圆形。@omm118不知道怎么做。您可能需要自己绘制多边形