Facebook
From Walloping Duck, 4 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 164
  1. package asd;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import javax.swing.*;
  6. import javax.imageio.ImageIO;
  7. import java.awt.image.BufferedImage;
  8. import java.io.File;
  9. import java.io.IOException;
  10. import java.math.*;
  11.  
  12. public class Transforms2D extends JPanel {
  13.  
  14.     private class Display extends JPanel {
  15.         protected void paintComponent(Graphics g) {
  16.             super.paintComponent(g);
  17.             Graphics2D g2 = (Graphics2D) g;
  18.             g2.translate(300, 300);  // Moves (0,0) to the center of the display.
  19.             int whichTransform = transformSelect.getSelectedIndex();
  20.  
  21.  
  22. //                      // TODO Apply transforms here, depending on the value of whichTransform!
  23. //                      int[] xpoints = new int[5];
  24. //                      int[] ypoints = new int[5];
  25. //
  26. //                      for(int i = 1 ; i<=5;i++)
  27. //                      {
  28. //                              xpoints[i-1]= (int) (150*Math.sin((2*Math.PI/5)*i));
  29. //                      }
  30. //
  31. //                      for(int i = 1 ; i<=5;i++)
  32. //                      {
  33. //                              ypoints[i-1]= (int) (150*Math.cos((2*Math.PI/5)*i));
  34. //                      }
  35. //                      Polygon polygon = new Polygon(xpoints,ypoints,5);
  36. //                              g2.drawPolygon(polygon);
  37.  
  38.             switch (whichTransform) {
  39.                 case 0:
  40.                     g2.drawImage(pic, -200, -150, null);
  41.                     break;
  42.                 case 1:
  43.                     g2.scale(0.5, 0.5);
  44.                     g2.drawImage(pic, -200, -150, null);
  45.                     break;
  46.                 case 2:
  47.                     g2.rotate(Math.toRadians(45));
  48.                     g2.drawImage(pic, -200, -150, null);
  49.                     break;
  50.                 case 3:
  51.                     g2.scale(0.5, -1.0);
  52.                     g2.drawImage(pic, -200, -150, null);
  53.                     break;
  54.                 case 4:
  55.                         g2.shear(0.25,0);
  56.                                         g2.drawImage(pic, -200, -150, null);
  57.                         break;
  58.                                 case 5:
  59.                                         g2.scale(1.0,0.5);
  60.                                         g2.translate(0,-450);
  61.                                         g2.drawImage(pic, -200, -150, null);
  62.                                         break;
  63.                                 case 6:
  64.                                         g2.shear(0,-0.25);
  65.                                         g2.rotate(Math.toRadians(90));
  66.                                         g2.drawImage(pic, -200, -150, null);
  67.                                         break;
  68.                                 case 7:
  69.                                         g2.scale(0.5,1.0);
  70.                                         g2.rotate(Math.toRadians(180));
  71.                                         g2.drawImage(pic, -200, -150, null);
  72.                                         break;
  73.                                 case 8:
  74.                                         g2.rotate(Math.toRadians(30));
  75.                                         g2.translate(50,100);
  76.                                         g2.scale(1.0,0.5);
  77.                                         g2.drawImage(pic, -200, -150, null);
  78.                                         break;
  79.                                 case 9:
  80.                                         g2.rotate(Math.toRadians(180));
  81.                                         g2.shear(0,0.25);
  82.                                         g2.translate(-150,0);
  83.                                         g2.drawImage(pic, -200, -150, null);
  84.                                         break;
  85.             }
  86.         }
  87.     }
  88.  
  89.     private Display display;
  90.     private BufferedImage pic;
  91.     private JComboBox<String> transformSelect;
  92.  
  93.     public Transforms2D() throws IOException {
  94.         pic = ImageIO.read(new File("shuttle.jpg"));
  95.         display = new Display();
  96.         display.setBackground(Color.YELLOW);
  97.         display.setPreferredSize(new Dimension(600, 600));
  98.         transformSelect = new JComboBox<String>();
  99.         transformSelect.addItem("None");
  100.         for (int i = 1; i < 10; i++) {
  101.             transformSelect.addItem("No. " + i);
  102.         }
  103.         transformSelect.addActionListener(new ActionListener() {
  104.             public void actionPerformed(ActionEvent e) {
  105.                 display.repaint();
  106.             }
  107.         });
  108.         setLayout(new BorderLayout(3, 3));
  109.         setBackground(Color.GRAY);
  110.         setBorder(BorderFactory.createLineBorder(Color.GRAY, 10));
  111.         JPanel top = new JPanel();
  112.         top.setLayout(new FlowLayout(FlowLayout.CENTER));
  113.         top.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
  114.         top.add(new JLabel("Transform: "));
  115.         top.add(transformSelect);
  116.         add(display, BorderLayout.CENTER);
  117.         add(top, BorderLayout.NORTH);
  118.     }
  119.  
  120.  
  121.     public static void main(String[] args) throws IOException {
  122.         JFrame window = new JFrame("2D Transforms");
  123.         window.setContentPane(new Transforms2D());
  124.         window.pack();
  125.         window.setResizable(false);
  126.         window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  127.         Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
  128.         window.setLocation((screen.width - window.getWidth()) / 2, (screen.height - window.getHeight()) / 2);
  129.         window.setVisible(true);
  130.     }
  131.  
  132. }