【发布时间】:2013-10-27 08:12:44
【问题描述】:
我对 java 中的图形很陌生,我正在尝试创建一个可以剪辑到另一个形状底部的形状。这是我想要实现的一个示例:
形状底部的白线是圆形边缘内的那种剪裁。 我目前这样做的方式是这样的:
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 来证明问题。
-
我怀疑更有效的方法是先在白色上涂上黄色,然后在上面涂上黄色,而不是做面积减法,你仍然在做同样数量的绘画,只是少了一次(可能很贵)与区域操作。
-
提高效率的唯一方法是将结果缓冲到 BufferedImage 上并简单地绘制,只根据需要更改缓冲区...