⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagefigure.java

📁 JHotDraw学习过程中对数组的测试程序haha 学习过程中对数组的测试程序
💻 JAVA
字号:
/* * @(#)ImageFigure.java 5.1 * */package CH.ifa.draw.figures;import java.awt.*;import java.io.*;import java.util.Vector;import java.awt.image.ImageObserver;import CH.ifa.draw.framework.*;import CH.ifa.draw.standard.*;import CH.ifa.draw.util.*;/** * A Figure that shows an Image. * Images shown by an image figure are shared by using the Iconkit. * @see Iconkit */public  class ImageFigure        extends AttributeFigure implements ImageObserver {    private String   fFileName;    private transient Image fImage;    private Rectangle fDisplayBox;    /*     * Serialization support.     */    private static final long serialVersionUID = 148012030121282439L;    private int imageFigureSerializedDataVersion = 1;    public ImageFigure() {        fFileName = null;        fImage = null;        fDisplayBox = null;    }    public ImageFigure(Image image, String fileName, Point origin) {        fFileName = fileName;        fImage = image;        fDisplayBox = new Rectangle(origin.x, origin.y, 0, 0);        fDisplayBox.width = fImage.getWidth(this);        fDisplayBox.height = fImage.getHeight(this);    }    public void basicDisplayBox(Point origin, Point corner) {        fDisplayBox = new Rectangle(origin);        fDisplayBox.add(corner);    }    public Vector handles() {        Vector handles = new Vector();        BoxHandleKit.addHandles(this, handles);        return handles;    }    public Rectangle displayBox() {        return new Rectangle(            fDisplayBox.x,            fDisplayBox.y,            fDisplayBox.width,            fDisplayBox.height);    }    protected void basicMoveBy(int x, int y) {        fDisplayBox.translate(x,y);    }    public void draw(Graphics g) {        if (fImage == null)            fImage = Iconkit.instance().getImage(fFileName);        if (fImage != null)            g.drawImage(fImage, fDisplayBox.x, fDisplayBox.y, fDisplayBox.width, fDisplayBox.height, this);        else            drawGhost(g);    }    private void drawGhost(Graphics g) {        g.setColor(Color.gray);        g.fillRect(fDisplayBox.x, fDisplayBox.y, fDisplayBox.width, fDisplayBox.height);    }   /**    * Handles asynchroneous image updates.    */    public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h) {	    if ((flags & (FRAMEBITS|ALLBITS)) != 0) {	        invalidate();	        if (listener() != null)	            listener().figureRequestUpdate(new FigureChangeEvent(this));	    }	    return (flags & (ALLBITS|ABORT)) == 0;    }   /**    * Writes the ImageFigure to a StorableOutput. Only a reference to the    * image, that is its pathname is saved.    */    public void write(StorableOutput dw) {        super.write(dw);        dw.writeInt(fDisplayBox.x);        dw.writeInt(fDisplayBox.y);        dw.writeInt(fDisplayBox.width);        dw.writeInt(fDisplayBox.height);        dw.writeString(fFileName);    }   /**    * Reads the ImageFigure from a StorableInput. It registers the    * referenced figure to be loaded from the Iconkit.    * @see Iconkit#registerImage    */    public void read(StorableInput dr) throws IOException {        super.read(dr);        fDisplayBox = new Rectangle(            dr.readInt(),            dr.readInt(),            dr.readInt(),            dr.readInt());        fFileName = dr.readString();        Iconkit.instance().registerImage(fFileName);    }    private void readObject(ObjectInputStream s)        throws ClassNotFoundException, IOException {        s.defaultReadObject();        Iconkit.instance().registerImage(fFileName);        fImage = null;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -