//************************************************************* //Java applet //「AffineTransformTest」 // //          作 成 者:ルート高菜    //          作成開始月:2007/2 //          最終更新月:2007/2 [TN103/J93] //************************************************************* import java.awt.*; import java.awt.event.*; import java.awt.geom.AffineTransform; import java.awt.image.*; import javax.swing.*; public class AffineTransformTest extends JApplet implements ActionListener { //Eclipseの場合、シリアライズ可能クラスでこれがないと警告が出る private static final long serialVersionUID=0; // Image image; AffineTransformTestPanel panel; // JComboBox lengthXCombo,lengthYCombo; JComboBox moveXCombo,moveYCombo; JComboBox warpXCombo,warpYCombo; JButton changeButton,formatButton; // public void init(){ // image=getImage(getDocumentBase(),"natu03.jpg"); // JPanel panel2=new JPanel(); panel2.add(new JLabel("幅(m00)")); panel2.add(lengthXCombo=new JComboBox(new String[]{"1","0.3","0.5","0.8","1.5","2","3"})); panel2.add(new JLabel("高さ(m11)")); panel2.add(lengthYCombo=new JComboBox(new String[]{"1","0.3","0.5","0.8","1.5","2","3"})); panel2.add(new JLabel("横移動(m02)")); panel2.add(moveXCombo=new JComboBox(new String[]{"0","20","50","80","100","150"})); panel2.add(new JLabel("縦移動(m12)")); panel2.add(moveYCombo=new JComboBox(new String[]{"0","20","50","80","100","150"})); panel2.add(new JLabel("横ゆがみ(m10)")); panel2.add(warpXCombo=new JComboBox(new String[]{"0","0.3","0.5","0.8","1","1.5","2","3"})); panel2.add(new JLabel("縦ゆがみ(m01)")); panel2.add(warpYCombo=new JComboBox(new String[]{"0","0.3","0.5","0.8","1","1.5","2","3"})); panel2.add(changeButton=new JButton("試行")); panel2.add(formatButton=new JButton("元に戻す")); //コンテナ枠 Container cp=getContentPane(); cp.add(panel=new AffineTransformTestPanel(image),BorderLayout.CENTER); cp.add(panel2,BorderLayout.SOUTH); // changeButton.addActionListener(this); formatButton.addActionListener(this); } // public void actionPerformed(ActionEvent e) { if(e.getSource()==changeButton){ // double m00,m11,m02,m12,m10,m01; //アフィン変換の行列内の該当要素に設定 try{ m00=Double.parseDouble((String)lengthXCombo.getSelectedItem()); m11=Double.parseDouble((String)lengthYCombo.getSelectedItem()); m02=Double.parseDouble((String)moveXCombo.getSelectedItem()); m12=Double.parseDouble((String)moveYCombo.getSelectedItem()); m10=Double.parseDouble((String)warpXCombo.getSelectedItem()); m01=Double.parseDouble((String)warpYCombo.getSelectedItem()); }catch(NumberFormatException nfe){ m00=m11=1; m02=m12=m10=m01=0; } //変形した画像を作成 AffineTransform affine=new AffineTransform(m00,m10,m01,m11,m02,m12); BufferedImageOp op=new AffineTransformOp(affine,AffineTransformOp.TYPE_BICUBIC); // ImageFilter filter=new BufferedImageFilter(op); ImageProducer producer=new FilteredImageSource(image.getSource(),filter); panel.image=createImage(producer); // repaint(); }else if(e.getSource()==formatButton){ // panel.setImage(image); // repaint(); } } }