home *** CD-ROM | disk | FTP | other *** search
/ Internet News 1999 October / INEWS_10_CD.ISO / pc / jdk / jdk1.2.2 / docs / guide / 2d / samples / Edge.java < prev    next >
Encoding:
Java Source  |  1999-09-19  |  2.2 KB  |  77 lines

  1.  
  2. import java.awt.*;
  3. import java.applet.Applet;
  4. import java.awt.image.*;
  5. import java.awt.geom.AffineTransform;
  6. import java.awt.event.WindowEvent;
  7. import java.awt.event.WindowListener;
  8. import java.awt.event.WindowAdapter;
  9.  
  10.  
  11. public class Edge extends Applet {
  12.  
  13.     private BufferedImage bi;
  14.     float[] elements = { 0.0f, -1.0f, 0.0f,
  15.                          -1.0f, 4.f, -1.0f,
  16.                          0.0f, -1.0f, 0.0f};
  17.  
  18.     public Edge() {
  19.             setBackground(Color.white);
  20.             Image img = getToolkit().getImage("images/boat.gif");
  21.             try {
  22.                 MediaTracker tracker = new MediaTracker(this);
  23.                 tracker.addImage(img, 0);
  24.                 tracker.waitForID(0);
  25.             } catch (Exception e) {}
  26.  
  27.             int iw = img.getWidth(this);
  28.             int ih = img.getHeight(this);
  29.             bi = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
  30.             Graphics2D big = bi.createGraphics();
  31.             big.drawImage(img,0,0,this);
  32.  
  33.     }
  34.  
  35.     public void paint(Graphics g) {
  36.         Graphics2D g2 = (Graphics2D) g;
  37.         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  38.                             RenderingHints.VALUE_ANTIALIAS_ON);
  39.         g2.setRenderingHint(RenderingHints.KEY_RENDERING,
  40.                             RenderingHints.VALUE_RENDER_QUALITY);
  41.         int w = getSize().width;
  42.         int h = getSize().height;
  43.         int bw = bi.getWidth(this);
  44.         int bh = bi.getHeight(this);
  45.  
  46.     AffineTransform at = new AffineTransform();
  47.     at.scale(w/2.0/bw, h/1.0/bh);
  48.  
  49.     BufferedImageOp biop = null;
  50.  
  51.  
  52.     BufferedImage bimg = new BufferedImage(bw,bh,BufferedImage.TYPE_INT_RGB);
  53.  
  54.         Kernel kernel = new Kernel(3, 3, elements);
  55.         ConvolveOp cop = new ConvolveOp(kernel, ConvolveOp.EDGE_NO_OP, null);
  56.     cop.filter(bi,bimg);
  57.     biop = new AffineTransformOp(at, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
  58.  
  59.     g2.drawImage(bi, biop, 0, 0);
  60.           g2.drawImage(bimg, biop, w/2+3,0); 
  61.  
  62.     }
  63.  
  64.     public static void main(String s[]) {
  65.     WindowListener l = new WindowAdapter() {
  66.         public void windowClosing(WindowEvent e) {System.exit(0);}
  67.     };
  68.     Frame f = new Frame("Edge");
  69.     f.addWindowListener(l);
  70.     f.add("Center", new Edge());
  71.     f.pack();
  72.     f.setSize(new Dimension(600, 300));
  73.     f.show();
  74.     }
  75. }
  76.  
  77.