JavaSwing匆妾凩岻屈?桟桟?耗 - 園殻秘壇利
true);
g2d.setPaint(paint);
Ellipse2D.Double leftCircle = new Ellipse2D.Double(x - circleWidth / 2, y, circleWidth, height);
Ellipse2D.Double rightCircle = new Ellipse2D.Double(x + width - circleWidth / 2, y, circleWidth, height);
int thickness=4;
Ellipse2D.Double rightHollowCircle = new Ellipse2D.Double(rightCircle.getX()+thickness,
rightCircle.getY()+thickness,
rightCircle.getWidth()-thickness*2,
rightCircle.getHeight()- thickness*2);
Rectangle rect = new Rectangle(x, y, width, height);
Area area = new Area(leftCircle);
area.add(new Area(rect));
area.subtract(new Area(rightCircle));
g2d.fill(area);
g2d.setColor(color.darker());
g2d.fill(rightCircle);
paint = new GradientPaint(x,
y,
Color.darkGray,
x,
y + (int) (height * 0.4),
Color.lightGray,
true);
g2d.setPaint(paint);
g2d.fill(rightHollowCircle);
g2d.setClip(null);
return rightHollowCircle;
}
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.add(new PipleComponent());
frame.setVisible(true);
}
}
JavaSwing也惊艳之二:环环相套(2)时间:2011-06-19 BlogJava Swing三、总结 本文知识要点: 渐变填充:创建 GradientPaint并设置“亮-暗-亮”的填充模式; 使用Clip:类似蒙版/剪切的Java2D技术。看看Graphics的setClip函数即可; Area的使用:主要是Area的相交、合并等几个常见图形处理 手法。详细请看java.awt.geom.Area类; 使用随机色:这个 就太简单了,如果有twaver.jar,可以直接使用TWaverUtil.getRandomColor() ;如果没有,就直接new Color就行了,注意使用第四个int参数增加Alpha透明 度的变化; 如果大家感兴趣,可以尝试用上述Java2D技巧实现下图效果 : 六、参考资料 http://java.sun.com/j2se/1.4.2/docs/guide/2d/spec/j2d- bookTOC.html http://java.sun.com/j2se/1.4.2/docs/guid e/2d/spec.html http://www.apl.jhu.edu/~hall/java/Java2D- Tutorial.html |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |