public class CakeChart extends Applet { //初始数据 PRivate double data[]={100.,50,113.,127.,299.234,120.,93.,123.,127.,199.,157.,189.}; private String percent[]=new String[data.length]; //每个数据所占百分比 private int radian[]=new int[data.length]; //每个数据所对应的弧度数 private double max,min; //初始化每块饼的颜色 private int dia=240;//设置饼图透明度 private Color c1=new Color(0,255,0,dia); private Color c2=new Color(255,255,0,dia); private Color c3=new Color(255,0,0,dia); private Color c4=new Color(255,128,64,dia); private Color c5=new Color(255,128,255,dia); private Color c6=new Color(255,0,128,dia); private Color c7=new Color(233,124,24,dia); private Color c8=new Color(204,119,115,dia); private Color c9=new Color(89,159,230,dia); private Color c10=new Color(148,140,179,dia); private Color c11=new Color(128,0,64,dia); private Color c12=new Color(174,197,208,dia); private Color colors[]={c1,c2,c3,c12,c11,c6,c4,c8,c9,c10,c5,c7}; //统计图的宽度和高度 private int width=600; private int height=400; //定义标题起始坐标变量 private int titleStart_x; private int titleStart_y; //定义圆心坐标 private int oval_x=60; private int oval_y=90; //定义椭圆的长轴和短轴 private int long_axes=280; private int short_axes=200; //定义图例区域起点坐标 private int cutlineRect_x=70; private int cutlineRect_y=450; //定义图倒区域矩形的宽度和高度 private int cutlineRect_width=100; private int cutlineRect_heigth=235; //定义日期变量 private Date date=new Date(); //定义统计图其他显示信息的超始坐标 private int otherInfo_x1; private int otherInfo_y1; private int otherInfo_x2; private int otherInfo_y2; private int otherInfo_x3; private int otherInfo_y3; //定义标题XY轴信息 private String title="服务器流量统计 (饼形统计图) "; private String otherInfo1="西南师范大学网络教育学院"; private String otherInfo2="www.eduwest.com"; private String otherInfo3="绘图日期:"; //双缓冲设置 private Image offScreenImage =null; private Graphics offScreenBuffer =null;
public CakeChart() { } public void init() { offScreenImage=this.createImage(width,height); offScreenBuffer=offScreenImage.getGraphics(); NumberBudget(); CoorBudget(); }
public void paint(Graphics g) { PaintBackground(offScreenBuffer); PaintChart(offScreenBuffer); g.drawImage(offScreenImage,0,0,this); }
public void PaintBackground(Graphics g) { //渐变背景初始颜色 Color BackStartColor=Color.white; Color BackLastColor=new Color(162,189,230); Color titleColor=Color.black; Color otherInfoColor=new Color(41,78,118); //标题背景颜色 Color titleBackColor=new Color(147,179,225); //统计图中心区域颜色 Color cutlineColor=new Color(0,128,255,50); //图例数据颜色 Color cutDataColor=Color.white;
Font titleFont=new Font("黑体",Font.BOLD,18); Font otherFont=new Font("宋体",Font.PLAIN,12); String year=""; String month=""; String day=""; Graphics2D g2=(Graphics2D)g; RenderingHints hints = new RenderingHints(null); hints.put(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHints(hints);
public void PaintChart(Graphics g) { int start=0; int rVal=192; int gVal=192; int bVal=192; int frameCount=60; Graphics2D g2=(Graphics2D)g; RenderingHints hints = new RenderingHints(null); hints.put(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); g2.setRenderingHints(hints);