2015-05-25 84 views
2

是否可以在繪製的圖像上填充一個矩形和一個橢圓形,並將橢圓形作爲背後圖像的「窗口」?Java 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實現嗎?

回答

1

我設法做到這一點,

我所做的是創建具有SWT.NO_TRIM財產新的外殼(它的父是畫布/服裝小部件),並在其上使用setRegion()

訣竅是該區域本身,它有一個subtract()方法, 所以我找到了一個方法來產生一個多邊形,我從該區域中減去它。

比我設置它和voilà。 我不得不添加調整大小和移動偵聽器,以使它看起來「自然」(即,畫布的一部分而不是新的外殼)。

它實際上工作得很好。

0

而不是使用fillOval()fillRectangle(),使用drawOval()drawRectangle()繪製輪廓,而不是填充區域。

這裏的JavaDoc

繪製橢圓形的輪廓,使用前景顏色,指定矩形區域內。

鑑於fillOval()作用:

填充橢圓形的內部,指定矩形區域內,與所述接收器的背景顏色。

+0

是的我知道這些選項,我應該提到矩形必須覆蓋圖像,而橢圓需要透明。 – omm118

+0

@ omm118那麼,使用'fillRectangle()'和'drawOval()' – Baz

+0

@ omm118或者你想讓橢圓「刪除」矩形的一部分? – Baz