这是我的代码,现在的问题是只能用其中的四个点画曲线,如果想把这些点都加进去,或者说给定随机个数的点,应该怎样修改,来画曲线?
谢谢import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.GeneralPath;public class BezLab extends Frame{
public static int [] x = {75,150,300,375,450,270};
public static int [] y = {250,100,350,250,300,500}; public static int[] xs = new int[100];
public static int[] ys = new int[100]; public static void main(String[] args) {
for (int k = 0; k<4; k++){
xs[k] = x[k];
ys[k] = y[k];
}
(new BezLab()).setVisible(true);
}
private int dragIndex = NOT_DRAGGING; private final static int NEIGHBORHOOD = 15; private final static int NOT_DRAGGING = -1; BezLab() {
setSize(500, 450); addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
} public void paint(Graphics g) {
for (int i = 0; i < 4; i++) {
if (i == 0 || i == 3)
g.setColor(Color.blue);
else
g.setColor(Color.cyan);
g.fillOval(xs[i] - 6, ys[i] - 6, 12, 12);
}
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.black);
GeneralPath path = new GeneralPath();
path.moveTo(xs[0], ys[0]);
path.curveTo(xs[1], ys[1], xs[2], ys[2], xs[3], ys[3]);
g2d.draw(path);
}
}
谢谢import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.GeneralPath;public class BezLab extends Frame{
public static int [] x = {75,150,300,375,450,270};
public static int [] y = {250,100,350,250,300,500}; public static int[] xs = new int[100];
public static int[] ys = new int[100]; public static void main(String[] args) {
for (int k = 0; k<4; k++){
xs[k] = x[k];
ys[k] = y[k];
}
(new BezLab()).setVisible(true);
}
private int dragIndex = NOT_DRAGGING; private final static int NEIGHBORHOOD = 15; private final static int NOT_DRAGGING = -1; BezLab() {
setSize(500, 450); addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
} public void paint(Graphics g) {
for (int i = 0; i < 4; i++) {
if (i == 0 || i == 3)
g.setColor(Color.blue);
else
g.setColor(Color.cyan);
g.fillOval(xs[i] - 6, ys[i] - 6, 12, 12);
}
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.black);
GeneralPath path = new GeneralPath();
path.moveTo(xs[0], ys[0]);
path.curveTo(xs[1], ys[1], xs[2], ys[2], xs[3], ys[3]);
g2d.draw(path);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货