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

📄 canvas.java

📁 现在在国外大学里最流行的java学习软件,同时还有大量的example,在名为project的文件里.安装好后用bluej打开peoject的例子,可以进行你想要的任何变化.同时可以了解大量的源码
💻 JAVA
字号:
import javax.swing.*;import java.awt.*;import java.awt.geom.*;/** * Class Canvas - a class to allow for simple graphical  * drawing on a canvas. *  * @author Michael Kolling (mik) * @author Bruce Quig * * @version 2006.03.30 */public class Canvas{    private JFrame frame;    private CanvasPane canvas;    private Graphics2D graphic;    private Color backgroundColor;    private Image canvasImage;    /**     * Create a Canvas with default height, width and background color      * (300, 300, white).     * @param title  title to appear in Canvas Frame          */    public Canvas(String title)    {        this(title, 300, 300, Color.white);            }    /**     * Create a Canvas with default background color (white).     * @param title  title to appear in Canvas Frame     * @param width  the desired width for the canvas     * @param height  the desired height for the canvas     */    public Canvas(String title, int width, int height)    {        this(title, width, height, Color.white);    }    /**     * Create a Canvas.     * @param title  title to appear in Canvas Frame     * @param width  the desired width for the canvas     * @param height  the desired height for the canvas     * @param bgClour  the desired background color of the canvas     */    public Canvas(String title, int width, int height, Color bgColor)    {        frame = new JFrame();        canvas = new CanvasPane();        frame.setContentPane(canvas);        frame.setTitle(title);        canvas.setPreferredSize(new Dimension(width, height));        backgroundColor = bgColor;        frame.pack();    }    /**     * Set the canvas visibility and brings canvas to the front of screen     * when made visible. This method can also be used to bring an already     * visible canvas to the front of other windows.     * @param visible  boolean value representing the desired visibility of     * the canvas (true or false)      */    public void setVisible(boolean visible)    {        if(graphic == null) {            // first time: instantiate the offscreen image and fill it with            // the background color            Dimension size = canvas.getSize();            canvasImage = canvas.createImage(size.width, size.height);            graphic = (Graphics2D)canvasImage.getGraphics();            graphic.setColor(backgroundColor);            graphic.fillRect(0, 0, size.width, size.height);            graphic.setColor(Color.black);        }        frame.setVisible(true);    }    /**     * Provide information on visibility of the Canvas.     * @return  true if canvas is visible, false otherwise     */    public boolean isVisible()    {        return frame.isVisible();    }    /**     * Draw the outline of a given shape onto the canvas.     * @param  shape  the shape object to be drawn on the canvas     */    public void draw(Shape shape)    {        graphic.draw(shape);        canvas.repaint();    }     /**     * Fill the internal dimensions of a given shape with the current      * foreground color of the canvas.     * @param  shape  the shape object to be filled      */    public void fill(Shape shape)    {        graphic.fill(shape);        canvas.repaint();    }    /**     * Fill the internal dimensions of the given circle with the current      * foreground color of the canvas.     */    public void fillCircle(int xPos, int yPos, int diameter)    {        Ellipse2D.Double circle = new Ellipse2D.Double(xPos, yPos, diameter, diameter);        fill(circle);    }    /**     * Fill the internal dimensions of the given rectangle with the current      * foreground color of the canvas. This is a convenience method. A similar      * effect can be achieved with the "fill" method.     */    public void fillRectangle(int xPos, int yPos, int width, int height)    {        fill(new Rectangle(xPos, yPos, width, height));    }    /**     * Erase the whole canvas.     */    public void erase()    {        Color original = graphic.getColor();        graphic.setColor(backgroundColor);        Dimension size = canvas.getSize();        graphic.fill(new Rectangle(0, 0, size.width, size.height));        graphic.setColor(original);        canvas.repaint();    }    /**     * Erase the internal dimensions of the given circle. This is a      * convenience method. A similar effect can be achieved with     * the "erase" method.     */    public void eraseCircle(int xPos, int yPos, int diameter)    {        Ellipse2D.Double circle = new Ellipse2D.Double(xPos, yPos, diameter, diameter);        erase(circle);    }    /**     * Erase the internal dimensions of the given rectangle. This is a      * convenience method. A similar effect can be achieved with     * the "erase" method.     */    public void eraseRectangle(int xPos, int yPos, int width, int height)    {        erase(new Rectangle(xPos, yPos, width, height));    }    /**     * Erase a given shape's interior on the screen.     * @param  shape  the shape object to be erased      */    public void erase(Shape shape)    {        Color original = graphic.getColor();        graphic.setColor(backgroundColor);        graphic.fill(shape);              // erase by filling background color        graphic.setColor(original);        canvas.repaint();    }    /**     * Erases a given shape's outline on the screen.     * @param  shape  the shape object to be erased      */    public void eraseOutline(Shape shape)    {        Color original = graphic.getColor();        graphic.setColor(backgroundColor);        graphic.draw(shape);  // erase by drawing background color        graphic.setColor(original);        canvas.repaint();    }    /**     * Draws an image onto the canvas.     * @param  image   the Image object to be displayed      * @param  x       x co-ordinate for Image placement      * @param  y       y co-ordinate for Image placement      * @return  returns boolean value representing whether the image was      *          completely loaded      */    public boolean drawImage(Image image, int x, int y)    {        boolean result = graphic.drawImage(image, x, y, null);        canvas.repaint();        return result;    }    /**     * Draws a String on the Canvas.     * @param  text   the String to be displayed      * @param  x      x co-ordinate for text placement      * @param  y      y co-ordinate for text placement     */    public void drawString(String text, int x, int y)    {        graphic.drawString(text, x, y);           canvas.repaint();    }    /**     * Erases a String on the Canvas.     * @param  text     the String to be displayed      * @param  x        x co-ordinate for text placement      * @param  y        y co-ordinate for text placement     */    public void eraseString(String text, int x, int y)    {        Color original = graphic.getColor();        graphic.setColor(backgroundColor);        graphic.drawString(text, x, y);           graphic.setColor(original);        canvas.repaint();    }    /**     * Draws a line on the Canvas.     * @param  x1   x co-ordinate of start of line      * @param  y1   y co-ordinate of start of line      * @param  x2   x co-ordinate of end of line      * @param  y2   y co-ordinate of end of line      */    public void drawLine(int x1, int y1, int x2, int y2)    {        graphic.drawLine(x1, y1, x2, y2);           canvas.repaint();    }    /**     * Sets the foreground color of the Canvas.     * @param  newColor   the new color for the foreground of the Canvas      */    public void setForegroundColor(Color newColor)    {        graphic.setColor(newColor);    }    /**     * Returns the current color of the foreground.     * @return   the color of the foreground of the Canvas      */    public Color getForegroundColor()    {        return graphic.getColor();    }    /**     * Sets the background color of the Canvas.     * @param  newColor   the new color for the background of the Canvas      */    public void setBackgroundColor(Color newColor)    {        backgroundColor = newColor;           graphic.setBackground(newColor);    }    /**     * Returns the current color of the background     * @return   the color of the background of the Canvas      */    public Color getBackgroundColor()    {        return backgroundColor;    }    /**     * changes the current Font used on the Canvas     * @param  newFont   new font to be used for String output     */    public void setFont(Font newFont)    {        graphic.setFont(newFont);    }    /**     * Returns the current font of the canvas.     * @return     the font currently in use     **/    public Font getFont()    {        return graphic.getFont();    }    /**     * Sets the size of the canvas.     * @param  width    new width      * @param  height   new height      */    public void setSize(int width, int height)    {        canvas.setPreferredSize(new Dimension(width, height));        Image oldImage = canvasImage;        canvasImage = canvas.createImage(width, height);        graphic = (Graphics2D)canvasImage.getGraphics();        graphic.drawImage(oldImage, 0, 0, null);        frame.pack();    }    /**     * Returns the size of the canvas.     * @return     The current dimension of the canvas     */    public Dimension getSize()    {        return canvas.getSize();    }    /**     * Waits for a specified number of milliseconds before finishing.     * This provides an easy way to specify a small delay which can be     * used when producing animations.     * @param  milliseconds  the number      */    public void wait(int milliseconds)    {        try        {            Thread.sleep(milliseconds);        }         catch (InterruptedException e)        {            // ignoring exception at the moment        }    }    /************************************************************************     * Inner class CanvasPane - the actual canvas component contained in the     * Canvas frame. This is essentially a JPanel with added capability to     * refresh the image drawn on it.     */    private class CanvasPane extends JPanel    {        public void paint(Graphics g)        {            g.drawImage(canvasImage, 0, 0, null);        }    }}

⌨️ 快捷键说明

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