import java.awt.*; import java.awt.Canvas; import java.util.*; import java.awt.image.*; public class nCanvas extends Canvas { Image buffImage; Graphics gBuff; boolean pixels[][]; double rx0=0.0, ry0=0.0, rx1=1.0, ry1=1.0; // real coord of left-bottom point and right-top point double rwidth=1.0, rheight=1.0; // width and hwight in real public void makeBuffer(){ Dimension ps=getSize(); buffImage=createImage(ps.width,ps.height); if(buffImage==null){ System.out.println("Could not make buffer.");} gBuff=buffImage.getGraphics(); gBuff.setColor(Color.black); pixels= new boolean[ps.width][ps.height]; } public void paint(Graphics g){ g.drawImage(buffImage,0,0,this); } public void update(Graphics g){ paint(g); } public void screen(double x0, double y0, double x1, double y1){ rx0=Math.min(x0,x1); rx1=Math.max(x0,x1); ry0=Math.min(y0,y1); ry1=Math.max(y0,y1); rwidth=rx1-rx0; rheight=ry1-ry0; } public void eraseBuff(){ Dimension ps=getSize(); Color tmpcol; // gBuff.clearRect(0,0,ps.width,ps.height); tmpcol=gBuff.getColor(); gBuff.setColor(Color.white); gBuff.fillRect(0,0,ps.width,ps.height); update(this.getGraphics()); for(int xi=0; xi