2000年7月6日更新(新規作成)
  関谷トップページへ CGトップページへ   戻る(Java8章ページへ)   このプログラムを実行のページへ  

中山、例GraphicsG12t.java インタラクティブベジェ曲線の作成(Applet版)

//GraphicsG12t.java インタラクティブベジェ曲線の作成
// Applet プログラムへの移植 2000.7.6 KPC sekiya
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.applet.*;			//  1 add

public class GraphicsG12t extends Applet implements MouseListener, MouseMotionListener
{
  int px=200,py=50,dx=400,dy=350;

  public void init(){			//  GraphicsG12() {
	setBackground(Color.yellow);		// from main()
	setLayout(new BorderLayout());    	// add for Applet

    addMouseListener(this); 
    addMouseMotionListener(this); 
//    addWindowListener(new WinAdapter()); 
  }

/*  public static void main(String ar[]) {
    Frame f=new GraphicsG12();
    f.setTitle("インタラクティブベジェ曲線の作成(マウスでコントロール点を変えられる)"); 
    f.setSize(new Dimension(640,400));
    f.setBackground(Color.yellow);
    f.show();
  } 
  class WinAdapter extends WindowAdapter {
    public void windowClosing(WindowEvent we){ System.exit(0);}
  }		*/

//  class MouAdapter extends MouseAdapter {
    public void mouseClicked(MouseEvent me) {
      px=me.getX();
      py=me.getY();
      repaint();
    }
//  }
//  class MotAdapter extends MouseMotionAdapter {
    public void mouseDragged(MouseEvent me) {
      dx=me.getX();
      dy=me.getY();
      repaint();
    }
   	public void mouseReleased(MouseEvent e) { } // JDK 1.1 
	public void mousePressed(MouseEvent e)  { } // JDK 1.1 
	public void mouseEntered(MouseEvent e)  { } // JDK 1.1 
	public void mouseExited(MouseEvent e)   { } // JDK 1.1 
	public void mouseMoved(MouseEvent e)    { } // JDK 1.1 
  
//  }
  public void paint(Graphics g){
     Graphics2D g2=(Graphics2D) g;
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
     GeneralPath p = new GeneralPath();
       p.moveTo(50, 200);
       p.curveTo(px, py, dx, dy, 600,200);
     g2.setColor(Color.blue);
     g2.setStroke(new BasicStroke(12f));
     g2.draw(new Ellipse2D.Double(45,195,10,10));
     g2.draw(new Ellipse2D.Double(595,195,10,10));
     g2.draw(p);
     g2.setColor(Color.red);
     g2.setStroke(new BasicStroke(1f));
     g2.drawLine(50,200,px,py);
     g2.drawLine(600,200,dx,dy);
     g2.drawRect(px,py,5,5);
     g2.fillRect(dx,dy,5,5);
	g2.drawString("インタラクティブベジェ曲線の作成(マウスclick□, dragg●でコントロール点を変えられる)", 20, 20);

  }
}