//************************************************************* //Java applet //「AffineTransformTest2」 // //          作 成 者:ルート高菜    //          作成開始月:2007/2 //          最終更新月:2007/2 [TN105/J95] //************************************************************* import java.awt.*; import java.awt.geom.AffineTransform; import javax.swing.*; import javax.swing.event.*; public class AffineTransformTest2 extends JApplet implements ChangeListener { //Eclipseの場合、シリアライズ可能クラスでこれがないと警告が出る private static final long serialVersionUID=0; // AffineTransformTest2Panel panel; // JSlider lengthXSlider,lengthYSlider; JSlider moveXSlider,moveYSlider; JSlider warpXSlider,warpYSlider; // public void init(){ // Image image=getImage(getDocumentBase(),"natu03.jpg"); //初期化の後、未変形のアフィン変換をセットしておく panel=new AffineTransformTest2Panel(image); panel.setAffineTransform(new AffineTransform(1,0,0,1,0,0)); // JPanel panel2=new JPanel(); panel2.setLayout(new GridLayout(6,2)); panel2.add(new JLabel("幅(m00):")); panel2.add(lengthXSlider=new JSlider(1,30,10)); panel2.add(new JLabel("高さ(m11):")); panel2.add(lengthYSlider=new JSlider(1,30,10)); panel2.add(new JLabel("横移動(m02):")); panel2.add(moveXSlider=new JSlider(0,150,0)); panel2.add(new JLabel("縦移動(m12):")); panel2.add(moveYSlider=new JSlider(0,150,0)); panel2.add(new JLabel("横ゆがみ(m10):")); panel2.add(warpXSlider=new JSlider(0,30,0)); panel2.add(new JLabel("縦ゆがみ(m01):")); panel2.add(warpYSlider=new JSlider(0,30,0)); //コンテナ枠 Container cp=getContentPane(); cp.add(panel,BorderLayout.CENTER); cp.add(panel2,BorderLayout.SOUTH); // lengthXSlider.addChangeListener(this); lengthYSlider.addChangeListener(this); moveXSlider.addChangeListener(this); moveYSlider.addChangeListener(this); warpXSlider.addChangeListener(this); warpYSlider.addChangeListener(this); } // public void stateChanged(ChangeEvent e) { //アフィン変換の行列内の該当要素に設定 double m00=((double)lengthXSlider.getValue())/10; double m11=((double)lengthYSlider.getValue())/10; double m02=((double)moveXSlider.getValue()); double m12=((double)moveYSlider.getValue()); double m10=((double)warpXSlider.getValue())/10; double m01=((double)warpYSlider.getValue())/10; //指定の変形をセットする panel.setAffineTransform(new AffineTransform(m00,m10,m01,m11,m02,m12)); // repaint(); } }