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);