国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java生成餅圖svg

2019-11-15 01:04:03
字體:
來源:轉載
供稿:網友
java生成餅圖svg

package com.tellhow.svg;

import java.io.File;import java.io.FileOutputStream;

/*** * @author 風絮NO.1**/public class CakySvgWithLabel {//定義不同的顏色static String[] colors ={"#f2e692", "#aa1111", "#799AE1", "#3e941b", "#66cc00", "#297110", "#d6a97b", "#82522b", "#aaaaff", "#1111aa", "#ff2222", "#ffaaaa"};static String initialize(double [] percents,String[]names){StringBuffer sfile = new StringBuffer();sfile.append("<?xml version='1.0' encoding='UTF-8'?>");sfile.append("/n");sfile.append("<svg xmlns:svg='http://www.w3.org/2000/svg'");sfile.append("/n"); sfile.append("xmlns='http://www.w3.org/2000/svg'"); sfile.append("/n"); sfile.append("xmlns:xlink='http://www.w3.org/1999/xlink'"); sfile.append("/n"); sfile.append("xml:space='default'"); sfile.append("/n"); sfile.append("version='1.1' width='100%' height='100%' viewBox='0 0 2024 570'>"); sfile.append("/n"); sfile.append("<defs></defs>"); sfile.append("/n"); sfile.append("<g stroke-width='1' stroke='#FFFFFF' transform='matrix(1,0,0,1,16.384,-9.83)' xmlns='http://www.w3.org/2000/svg'>"); sfile.append("/n"); //循環創造path標簽. String path =creatPath(502, 300, 300, percents,names);//中心點式503,300. sfile.append(path); sfile.append("</g>"); sfile.append("/n"); sfile.append("</svg>");return sfile.toString();}/** * * @param x0 中心點橫坐標 * @param y0 中心點縱坐標 * @param r 半徑 * @param percents 百分比數組 * @param names 顯示顏色代表的名稱 * @return */ public static String creatPath(double x0,double y0,double r,double[]percents,String[]names){ StringBuffer sfile =new StringBuffer(); double x1=0; //新扇形的x坐標 double y1=0; //新扇形的y坐標 double middleX=0; //文本顯示的坐標,包括豎線顯示的坐標 double middleY=0; double radian =0; //弧度 double textRadian=0; //文本顯示位置度弧度 double k=0; int N=10; for(int i=0;i<percents.length;i++){ if(i==0){ radian =getRadian(percents[0]); textRadian=radian/2; x1 = (x0+getCos(radian)*r); y1 = (y0-getSin(radian)*r); middleX=(x0+getCos(textRadian)*r); middleY=(y0-getSin(textRadian)*r); double percent = Math.round(percents[0]*100)/100.0;//獲得精確到兩位小數點的坐標. k=Math.abs((middleY-y0)/(middleX-x0));//獲得扇形終點的坐標,與中心點連成的直線的斜率.(取正值) double sita= Math.atan(k);//求斜角 double lineLen=50; double textLen=70; if(radian<6){ lineLen=90; textLen=110;//控制指示線的長度,與文字的位置 } if(percents[i]!=0){//當一個類型為0時,餅圖展示 if((textRadian<(Math.PI/2))){ sfile.append("<line x1='"+middleX+"' y1='"+middleY+"' x2='"+(middleX+Math.cos(sita)*lineLen)+"' y2='"+(middleY-(Math.sin(sita)*lineLen))+"' stroke='#000000'/>"); sfile.append("/n"); sfile.append("<text x='"+(middleX+Math.cos(sita)*textLen)+"' y='"+(middleY-(Math.sin(sita)*textLen))+"' space='

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵州省| 浦县| 敦煌市| 乐安县| 漳浦县| 策勒县| 台中市| 苗栗县| 垦利县| 会理县| 安泽县| 石台县| 北安市| 稻城县| 麻阳| 巨鹿县| 龙海市| 宜兴市| 博野县| 泽普县| 大荔县| 灵宝市| 武强县| 垣曲县| 日喀则市| 上虞市| 建昌县| 收藏| 唐海县| 专栏| 庄浪县| 台北县| 昌吉市| 唐海县| 贡山| 襄城县| 洛隆县| 汨罗市| 河北省| 故城县| 资溪县|