我用Graphics和Graphics2D,画的圆都比较粗糙,锯齿很明显啊,尤其食圆比较小的时候,我想问一下,是Java画的圆本来就粗糙还是需要什么技巧,怎么样才能画出比较好看的圆形。谢谢
------解决方案--------------------
- Java code
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); }}
------解决方案--------------------
- Java code
Ellipse2D.Doublepublic Ellipse2D.Double()构造一个新 Ellipse2D,并将其初始化为:位置 (0, 0)、大小 (0, 0)。 --------------------------------------------Ellipse2D.Doublepublic Ellipse2D.Double(double x, double y, double w, double h)根据指定坐标构造和初始化 Ellipse2D。 参数:x, y - 边界矩形的坐标w - 矩形的宽度h - 矩形的高度
------解决方案--------------------
这样的圆不好
应该另外建立一个坐标系(类似数学中的直角坐标系),在这个坐标系中定义圆的圆心、半径等,并计算圆上点的轨迹,将这些转换为屏幕坐标(就是你上面用到的),进行描点画出圆,这样的同心圆就没什么问题了
------解决方案--------------------
可以优化,但绝对园不太可能,尤其是半径比较小。关于同心园是因为不同圆心的问题
------解决方案--------------------
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);
}
}