我用Graphics和Graphics2D,画的圆都比较粗糙,锯齿很明显啊,尤其食圆比较小的时候,我想问一下,是Java画的圆本来就粗糙还是需要什么技巧,怎么样才能画出比较好看的圆形。谢谢

解决方案 »

  1.   


    import java.awt.Color; 
    import java.awt.Graphics; 
    import java.awt.Graphics2D;
    import java.awt.RenderingHints;
    import java.awt.geom.Ellipse2D;import javax.swing.*; public class testpaint extends JFrame{
    public static void main(String[] args) { 
    testpaint t=new testpaint(); 
    t.setLocation(100, 100); 
    t.setSize(500, 400); 
    t.getContentPane().setBackground(Color.green); 
    t.setVisible(true); 

    public void paint(Graphics g){
    super.paint(g);
    Graphics2D g2 = (Graphics2D)g;
    Ellipse2D e = new Ellipse2D.Double(10,50,70,70);
    //加上下面这句就能变的圆滑了 
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    g2.setPaint(Color.RED);
    g2.draw(e);
    //g2.fill(e);
    }
    }
      

  2.   

    用专门的图表工具,例如chartdirector
      

  3.   

    我再顶,还有一个问题,我用这个方法写了两个同心圆,但是出来的效果怎么好像不同心啊
            Ellipse2D e = new Ellipse2D.Double(10,10,50,50);
            g2.draw(e);
            Ellipse2D e2 = new Ellipse2D.Double(12,12,46,46);
            g2.fill(e2);
      

  4.   

    Ellipse2D.Double
    public Ellipse2D.Double()构造一个新 Ellipse2D,并将其初始化为:位置 (0, 0)、大小 (0, 0)。 
    --------------------------------------------------------------------------------Ellipse2D.Double
    public Ellipse2D.Double(double x,
                            double y,
                            double w,
                            double h)根据指定坐标构造和初始化 Ellipse2D。 参数:
    x, y - 边界矩形的坐标
    w - 矩形的宽度
    h - 矩形的高度
      

  5.   

    加了0.5就同心了,不知道怎么回事        Ellipse2D e = new Ellipse2D.Double(10,10,20,20);
            g2.draw(e);
            Ellipse2D e2 = new Ellipse2D.Double(12.5,12.5,16,16);
            g2.fill(e2);
      

  6.   

    加入反锯齿:
    import java.awt.*; Graphics2D g2 = (Graphics2D)g;
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
      

  7.   

    bfddddddddddddddddddddddddddddddddddddd
      

  8.   

    sdfsdffdsfsdf
      

  9.   

    我也想知道,正在学习JAVA希望好心人给帮助
      

  10.   

    same 
    import java.awt.Color; 
    import java.awt.Graphics; 
    import java.awt.Graphics2D;
    import java.awt.RenderingHints;
    import java.awt.geom.Ellipse2D;import javax.swing.*; public class testpaint extends JFrame{
        public static void main(String[] args) { 
            testpaint t=new testpaint(); 
            t.setLocation(100, 100); 
            t.setSize(500, 400); 
            t.getContentPane().setBackground(Color.green); 
            t.setVisible(true); 
        } 
        public void paint(Graphics g){
            super.paint(g);
            Graphics2D g2 = (Graphics2D)g;
            Ellipse2D e = new Ellipse2D.Double(10,50,70,70);
            //加上下面这句就能变的圆滑了 
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            g2.setPaint(Color.RED);
            g2.draw(e);
            //g2.fill(e);
        }
    }