📄 creatimg.java~45~
字号:
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) { System.out.println("--> Erreur 1 : ".concat(String.valueOf(String.valueOf(e)))); } } /**设置图片的宽度**/ 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, 9)) 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 + -