1.[代码][Java]代码
public class DrawLineByDDA extends JPanel {
private float dx, dy, length,x, y;
private int zx,zy;
private int x0, y0, x1, y1;
private Color color;
private Logger logger=Logger.getLogger(this.getClass().getName());
/**
* Constructor
*/
public DrawLineByDDA(int x0, int y0, int x1, int y1, Color color) {
this.x0=x0;
this.y0=y0;
this.x1=x1;
this.y1=y1;
this.color=color;
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(color);
zx = Math.abs(x1 - x0);
zy = Math.abs(y1 - y0);
logger.log(Level.INFO, "zx:"+zx+",zy:"+zy);
if (zx >= zy) {
length = zx;
logger.log(Level.INFO, "length:"+length);
} else {
length = zy;
logger.log(Level.INFO, "length:"+length);
}
dx = (x1 - x0) / length;
dy = (y1 - y0) / length;
logger.log(Level.INFO, "dx:"+dx+",dy:"+dy);
x = x0;
y = y0;
for (int i = 1; i < length; i++) {
logger.log(Level.INFO, "x:"+x+",y:"+y);
g.drawRect((int) (x + 0.5), (int) (y + 0.5), 0, 0);
x = x + dx;
y = y + dy;
}
}
}