在椭圆内绘制多个填充弧

时间:2012-03-27 16:25:56

标签: java swing graphics

我想在java中绘制饼图菜单,其中椭圆形中有8个馅饼,大小相等。  问题是当我在椭圆形中绘制一个圆弧时,下一个圆弧与前一个圆弧重叠并改变其颜色,但我希望在圆圈内用不同颜色的8个相等尺寸的填充圆弧。任何人都可以告诉我如何实现这一目标?这是我的代码。

public class mypanel extends JPanel {

    int mx = 20;
    int my = 20;
    int ms = 120;
    int mg = 120;

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.red);
        g2.drawOval(mx, my, 100, 100);
        g2.fillArc(mx, my, 100, 100, 0, 45);
        g2.setColor(Color.blue);
        g2.fillArc(mx, my, 100, 100, 0, 60);
        g2.setColor(Color.white);
        g2.fillArc(mx, my, 100, 100, 0, 20);
        g2.setColor(Color.black);
        g2.fillArc(mx, my, 100, 100, 0, 80);
        g2.setColor(Color.blue);
        g2.fillArc(mx, my, 100, 100, 0, 95);

    }
}

2 个答案:

答案 0 :(得分:4)

这应该可以解决问题:

    Color[] c = {Color.BLACK, Color.RED, Color.BLUE, Color.YELLOW, 
                 Color.GREEN, Color.CYAN, Color.MAGENTA, Color.PINK};
    for(int i=0; i<8; ++i){
        g.setColor(c[i]);
        g.fillArc(x, y, w, h, i*45, 45);
    }

答案 1 :(得分:2)

库包含几个基本demos,包括PieChartDemo1。单击类名以查看相应的source。任何CategoryAnnotation都应该适用,并且支持丰富的events系统。