我很新的图形在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