首页 > 代码库 > 快速生成扇形图

快速生成扇形图

快速生成扇形图只需修改数组budgetAll和actualAll

代码如下:

 1                //设置笔刷样式
 2                 SolidBrush[] sbrush =
 3                 {
 4                     new SolidBrush(Color.Wheat),//背景色
 5                     new SolidBrush(Color.Gold),//其它
 6                     new SolidBrush(Color.Red),//交通
 7                     new SolidBrush(Color.Green),//饮食
 8                     new SolidBrush(Color.Blue),//门票
 9                     new SolidBrush(Color.Brown)//住宿
10                 };
11                 Rectangle rect1 = new Rectangle(0, 0, 200, 200);
12                 Rectangle rect2 = new Rectangle(10, 10, 180, 180);
13                 Graphics g1 = panel1.CreateGraphics();//预算
14                 Graphics g2 = panel2.CreateGraphics();//实际支出
15                 g1.FillEllipse(sbrush[0], rect1);
16                 g2.FillEllipse(sbrush[0], rect1);
17                 g1.FillEllipse(sbrush[1], rect2);
18                 g2.FillEllipse(sbrush[1], rect2);
19                 string[] budgetAll = budget.Split(,);
20                 string[] actualAll = actual.Split(,);
21                 int sumBudget = 0;
22                 int sumActual = 0;
23                 for (int i = 0; i < budgetAll.Length; i++)
24                 {
25                     sumBudget +=Int32.Parse(budgetAll[i]);
26                     sumActual += Int32.Parse(actualAll[i]);
27                 }
28 
29                 int angleBud = 30;//预算起始角度
30                 int angleAct=30;//实际起始角度
31                 int tempBud, tempAct;
32                 for (int i = 0; i < budgetAll.Length-1; i++)
33                 {
34                     tempBud=(int)(Int32.Parse(budgetAll[i]) * 360 / sumBudget);
35                     tempAct=(int)(Int32.Parse(actualAll[i]) * 360 / sumActual);
36                     g1.FillPie(sbrush[i + 2], rect2, angleBud, tempBud);
37                     g2.FillPie(sbrush[i + 2], rect2, angleAct, tempAct);
38                     angleBud += tempBud;
39                     angleAct += tempAct;
40                 }

效果图如下: