日期:2014-05-20 浏览次数:21002 次
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);
}
}
------解决方案--------------------
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 - 矩形的高度
------解决方案--------------------
这样的圆不好
应该另外建立一个坐标系(类似数学中的直角坐标系),在这个坐标系中定义圆的圆心、半径等,并计算圆上点的轨迹,将这些转换为屏幕坐标(就是你上面用到的),进行描点画出圆,这样的同心圆就没什么问题了
------解决方案--------------------
可以优化,但绝对园不太可能,尤其是半径比较小。关于同心园是因为不同圆心的问题
------解决方案--------------------
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);
}
}