我很新的圖形在Java中,我試圖創建一個形狀,剪輯到另一個形狀的底部。下面是我想要達到一個例子:2D剪輯區域的形狀
凡在形狀底座上的白線是何許圓形邊緣之內; 我這樣做目前的辦法是,像這樣:
g2.setColor(gray);
Shape shape = getShape(); //round rectangle
g2.fill(shape);
Rectangle rect = new Rectangle(shape.getBounds().x, shape.getBounds().y, width, height - 3);
Area area = new Area(shape);
area.subtract(new Area(rect));
g2.setColor(white);
g2.fill(area);
我仍然與剪輯方法進行實驗,但我似乎無法得到它的權利。目前的方法是否正確(性能明智,因爲組件經常重新繪製)還是有更高效的方法?
發佈您的[SSCCE](http://sscce.org/),證明問題。 – camickr
我懷疑更有效的方法是首先對白色和黃色進行加強,而不是進行區域減法,然而對Area進行少量(可能是昂貴的)操作的話,您仍然在使用相同數量的paintcalls。 – arynaq
讓效率更高的唯一方法是將結果緩衝到BufferedImage上,並簡單地繪製,只根據需要更改緩衝區... – MadProgrammer