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

📄 creatimg.java~47~

📁 实例大全
💻 JAVA~47~
字号:
package dyimg;/** * Title: * Description: * Copyright:    Copyright (c) 2001 * Company: * @author songxf * @version 1.0 */import java.awt.image.*;import java.awt.*;import java.io.*;public class creatImg {    private Frame m_frame;    private Graphics m_g;    private Image m_img;    private int m_nWidth=400;    private int m_nHeight=500;    private int m_nX=100;    private int m_nY=100;    private double m_dTheta=Math.PI/4;    private int m_nRadius=40;    private int m_nStep=10;    private Color m_bgColor=Color.white;    private Color m_forColor=Color.black;    public creatImg()    {    }    /**生成一个offscreen的Image对象,并且获得它的Graphics对象**/    public void init()    {        m_frame = new Frame();        m_frame.addNotify();        try        {            m_img = m_frame.createImage(m_nWidth,m_nHeight);            m_g = m_img.getGraphics();        }        catch (Exception e)        {            e.printStackTrace();        }    }    /**设置图片的宽度**/    public void setWidth(int nWidth)    {        m_nWidth=nWidth;    }    /**设置图片的高度**/    public void setHeight(int nHeight)    {        m_nHeight=nHeight;    }    /**设置小球每步走的步长**/    public void setStep(int nStepDist)    {        m_nStep=nStepDist;    }    /**设置小球移动的方向**/    public void setTheta(double dTheta)    {        m_dTheta=dTheta;    }    /**设置小球的初始坐标X**/    public void setStartX(int nX)    {        m_nX=nX;    }    /**设置小球的初始坐标Y**/    public void setStartY(int nY)    {        m_nY=nY;    }    /**画一个不断的移动的小球**/    public void drawBall()    {        m_g.setColor(m_bgColor);        m_g.fillRect(0,0,m_nWidth,m_nHeight);        m_nX+=(int)(m_nStep*Math.cos(m_dTheta));        m_nY+=(int)(m_nStep*Math.sin(m_dTheta));        /**判断是否碰壁**/        boolean bTouch=false;        if(m_nX<m_nRadius ||(m_nWidth-m_nX)<m_nRadius)        {            m_dTheta=Math.PI-m_dTheta;            bTouch=true;        }        if(m_nY<m_nRadius || (m_nHeight-m_nY)<m_nRadius)        {            m_dTheta=-m_dTheta;            bTouch=true;        }        if(bTouch)        {            m_nX+=m_nStep*(int)Math.cos(m_dTheta);            m_nY+=m_nStep*(int)Math.sin(m_dTheta);        }        m_g.setColor(m_forColor);        m_g.fillOval(m_nX-m_nRadius,m_nY-m_nRadius,2*m_nRadius,2*m_nRadius);    }    /**Image对象生成PNG图片的byte数组**/    public byte[] getImage()    {        drawBall();        byte ab[] = null;        try        {            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(100000);            if (!encode(byteArrayOutputStream, 1))                System.out.println("转换失败");            ab = byteArrayOutputStream.toByteArray();            byteArrayOutputStream.flush();            byteArrayOutputStream.close();        }        catch (Exception e)        {            e.printStackTrace();        }        return ab;    }    /**转换,并将转换生成的PNG格式的文件输出到一个输出流里头,i为PNG格式的压缩率**/    public boolean encode(OutputStream outputStream, int i)    {        try        {            boolean flag;            PngEncoder pngEncoder = new PngEncoder(m_img);            pngEncoder.setCompressionLevel(i);            byte ab[] = pngEncoder.pngEncode();            if (ab == null)                System.out.println("图片是空的");            else                outputStream.write(ab);            outputStream.flush();            return true;        }        catch (Exception ex)        {            ex.printStackTrace();        }        return false;    }}

⌨️ 快捷键说明

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