MagickCanvas.java
上传用户:qingzhou
上传日期:2013-04-21
资源大小:733k
文件大小:2k
源码类别:

破解

开发平台:

Java

  1. package magick.util;
  2. import java.awt.Canvas;
  3. import java.awt.Image;
  4. import java.awt.Graphics;
  5. import java.awt.image.ImageObserver;
  6. import java.awt.Dimension;
  7. import magick.MagickImage;
  8. import magick.MagickProducer;
  9. /**
  10.  * This class a specialisation of Canvas to display
  11.  * MagickImage in AWT.
  12.  *
  13.  * @author Eric Yeo
  14.  */
  15. public class MagickCanvas extends Canvas {
  16.     /**
  17.      * The AWT version of the image.
  18.      */
  19.     private Image image;
  20.     /**
  21.      * Width of the image.
  22.      */
  23.     private int width;
  24.     /**
  25.      * Height of the image.
  26.      */
  27.     private int height;
  28.     /**
  29.      * Implements the image observer to wait for the
  30.      * image to be completely loaded.
  31.      */
  32.     private class ImageNotification implements ImageObserver {
  33. /**
  34.  * This method is called when the image is completely loaded.
  35.  */
  36. public boolean imageUpdate(Image img,
  37.    int infoflags,
  38.    int x,
  39.    int y,
  40.    int w,
  41.    int h) {
  42.     width = w;
  43.     height = h;
  44.     setSize(w, h);
  45.     repaint();
  46.     return false;
  47. }
  48.     }
  49.     /**
  50.      * Set the viewing image.
  51.      *
  52.      * @param magickImage the MagickImage to view
  53.      */
  54.     public void setImage(MagickImage magickImage) {
  55. image = createImage(new MagickProducer(magickImage));
  56. ImageNotification notify = new ImageNotification();
  57. width = image.getWidth(notify);
  58. height = image.getHeight(notify);
  59. if (width > 0 && height > 0) {
  60.     setSize(width, height);
  61.     repaint();
  62. }
  63.     }
  64.     
  65.     /**
  66.      * Method to draw the image onto the Canvas.
  67.      *
  68.      * @param g the Graphics object for drawing
  69.      */
  70.     public void paint(Graphics g) {
  71. if (image != null) {
  72.     g.drawImage(image, 0, 0, this);
  73. }
  74. else {
  75.     super.paint(g);
  76. }
  77.     }
  78.     /**
  79.      * Return the preferred size of the Canvas.
  80.      */
  81.     public Dimension getPreferredSize() {
  82. return new Dimension(width, height);
  83.     }
  84.     /**
  85.      * Constructor.
  86.      */
  87.     public MagickCanvas() {
  88. image = null;
  89. width = 0;
  90. height = 0;
  91.     }
  92.     
  93. }