柱形图 和 折线图 饼形图控件

饼形图|控件|折线图|柱形图

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;
using System.Xml ;

namespace ChartControl
{
 /// <summary>
 /// ChartControl 1.0 的摘要说明。此控件是画图的,根据xml文档的数据生成图表。
 /// 目前能够画2维图和3维图 柱形图 和 折线图 饼形图。韩永矗5Apr2005制作。
 /// 柱形图请将xml文件中的“add key="DiagramType"”修改为histogram
 /// 折线图请将xml文件中的“add key="DiagramType"”修改为flexdiagram
 /// 饼形图请将xml文件中的“add key="DiagramType"”修改为cakydiagram
 /// xml文件不能修改名字,需要和你的程序执行文件在同一个目录。
 /// </summary>
 public class ChartControl : System.Windows.Forms.UserControl
 {
  private System.Windows.Forms.Label label1;
  private System.Windows.Forms.Label label2;
  private System.Windows.Forms.Label label3;
  /// <summary>
  /// 必需的设计器变量。
  /// </summary>
  private System.ComponentModel.Container components = null;

  public ChartControl()
  {
   // 该调用是 Windows.Forms 窗体设计器所必需的。
   InitializeComponent();

   // TODO: 在 InitComponent 调用后添加任何初始化

  }

  /// <summary>
  /// 清理所有正在使用的资源。
  /// </summary>
  protected override void Dispose( bool disposing )
  {
   if( disposing )
   {
    if( components != null )
     components.Dispose();
   }
   base.Dispose( disposing );
  }

  #region 组件设计器生成的代码
  /// <summary>
  /// 设计器支持所需的方法 - 不要使用代码编辑器
  /// 修改此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.label1 = new System.Windows.Forms.Label();
   this.label2 = new System.Windows.Forms.Label();
   this.label3 = new System.Windows.Forms.Label();
   this.SuspendLayout();
   //
   // label1
   //
   this.label1.Location = new System.Drawing.Point(104, 16);
   this.label1.Name = "label1";
   this.label1.Size = new System.Drawing.Size(160, 24);
   this.label1.TabIndex = 0;
   this.label1.Text = "label1";
   //
   // label2
   //
   this.label2.Location = new System.Drawing.Point(8, 56);
   this.label2.Name = "label2";
   this.label2.TabIndex = 1;
   this.label2.Text = "label2";
   //
   // label3
   //
   this.label3.Location = new System.Drawing.Point(288, 320);
   this.label3.Name = "label3";
   this.label3.TabIndex = 2;
   this.label3.Text = "label3";
   //
   // ChartControl
   //
   this.BackColor = System.Drawing.Color.White;
   this.Controls.Add(this.label3);
   this.Controls.Add(this.label2);
   this.Controls.Add(this.label1);
   this.Name = "ChartControl";
   this.Size = new System.Drawing.Size(448, 360);
   this.Load += new System.EventHandler(this.ChartControl_Load);
   this.ResumeLayout(false);

  }
  #endregion

  #region 读写xml文件的几个小函数,2005 4 2 by hyc

  public void SetXmlFileValue(string xmlPath,string AppKey,string AppValue)//写xmlPath是文件路径+文件名,AppKey是 Key Name,AppValue是Value
  {
   XmlDocument xDoc = new XmlDocument();
   xDoc.Load(xmlPath);
   XmlNode xNode;
   XmlElement xElem1;
   XmlElement xElem2;

   xNode =  xDoc.SelectSingleNode("//appSettings");

   xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']");
   if ( xElem1 != null )
   {
    xElem1.SetAttribute("value",AppValue);
   }
   else
   {
    xElem2 = xDoc.CreateElement("add");
    xElem2.SetAttribute("key",AppKey);
    xElem2.SetAttribute("value",AppValue);
    xNode.AppendChild(xElem2);
   }
   xDoc.Save(xmlPath);
  }

  public void GetXmlFileValue(string xmlPath,string AppKey,ref string AppValue)//读xmlPath是文件路径+文件名,AppKey是 Key Name,AppValue是Value
  {
   XmlDocument xDoc = new XmlDocument();
   xDoc.Load(xmlPath);
   XmlNode xNode;
   XmlElement xElem1;

   xNode =  xDoc.SelectSingleNode("//appSettings");

   xElem1 = (XmlElement)xNode.SelectSingleNode("//add[@key='" + AppKey + "']");
   if ( xElem1 != null )
   {
    AppValue=xElem1.GetAttribute ("value");
   }
   else
   {
//    MessageBox.Show ("There is not any information!");
   }

  }

  #endregion

  #region 变量声明,2005 4 4 by hyc

  public int FormHeight;
  public int FormWidth;
  public int Num=1;
  public int Max=1;
  public int Min=1;
  public int JNum=1;//维数
  public int polebold;
  public int HeightXS=100;//高度系数
  public int[] StartAngl=new int [100];//开始角度
  public int[] SweepAngl=new int [100]; //跨越弧度
  public int AllSweep;
  public int KuanDu;
  public int[,] X=new int [100,100];
  public int [,] Y=new int[100,100];
  public int[,] YY=new int [100,100];
  public string[] TypeName=new string [100];
  public string[,] TypeValue=new string [100,100];
  public string appvalue; 
  public string PathFileName=System.Windows .Forms .Application.StartupPath +"\\XMLChart.xml";
  System.Windows .Forms .Label [] TypeNameLabel;
  System.Windows .Forms .Label [,] TypeValueLabel;

  #endregion

  #region 自定义函数,2005 4 4 by hyc

  public void AllBegain()//All 初始化
  {
   FormHeight=this.Height ;
   FormWidth=this.Width ;
   GetXmlFileValue(PathFileName,"DiagramName",ref appvalue);
   label1.Text =appvalue+"(此图表控件是测试版)";
   GetXmlFileValue(PathFileName,"YName",ref appvalue);
   label2.Text =appvalue;
   GetXmlFileValue(PathFileName,"XName",ref appvalue);
   label3.Text =appvalue;

   label1.AutoSize =true;
   label1.Top =5;
   label1.Left =(FormWidth-label1.Width )/2;
   label2.AutoSize =true ;
   label3.AutoSize=true;
   label2.Top =15;
   label2.Left =5;
   label3.Top=FormHeight-10;
   label3.Left=FormWidth-label3.Width-5;

   GetXmlFileValue(PathFileName,"Num",ref appvalue);
   Num=Int32.Parse (appvalue);

   GetXmlFileValue(PathFileName,"JNum",ref appvalue);
   JNum=Int32.Parse (appvalue);

  }

  
  public void HistogramBegain()//Histogram 初始化
  {
   for(int i=1;i<=Num;i++)
   {
    GetXmlFileValue(PathFileName,"ID"+i.ToString (),ref TypeName[i]);
    for(int j=1;j<=JNum;j++)
    {
     GetXmlFileValue(PathFileName,"ID"+j.ToString()+"Num"+i.ToString (),ref TypeValue[j,i]);
    }
   }

   polebold=FormWidth*2/(3*Num*JNum);
   
   
   Max=Int32.Parse (TypeValue[1,1]);
   Min=Int32.Parse (TypeValue[1,1]);
   for(int i=1;i<=Num;i++)
   {
    for(int j=1;j<=JNum;j++)
    {
     if(Int32.Parse (TypeValue[j,i])>Max)
     {
      Max=Int32.Parse (TypeValue[j,i]);
     }
     if(Int32.Parse (TypeValue[j,i])<Min)
     {
      Min=Int32.Parse (TypeValue[j,i]);
     }
    }
   }

   for(int i=1;i<100;i++)
   {
    if(Max>(FormHeight-50))
    {
     HeightXS=HeightXS/2;
     Max=Max/2;
    }
    if(Max<(FormHeight-50)/2)
    {
     HeightXS=HeightXS*2;
     Max=Max*2;
    }
    if(Max<(FormHeight-50) && Max>(FormHeight-50)/2)
    {
     break;
    }
   }

   for(int i=1;i<=Num;i++)
   {
    for(int j=1;j<=JNum;j++)
    {
     X[j,i]=(label3.Left -(label2.Left +label2.Width ))/Num*i-(label2.Left +label2.Width )+(polebold+1)*(j-1)-label3.Width  ;//????
     Y[j,i]=label3.Top-5-(Int32.Parse (TypeValue[j,i])*HeightXS/100);
     YY[j,i]=Int32.Parse (TypeValue[j,i]);
     YY[j,i]=YY[j,i]*HeightXS/100;
    }
   }

   TypeNameLabel = new System.Windows .Forms.Label[100];

   for(int i=1;i<=Num;i++)
   {
    TypeNameLabel[i]=new Label ();
    TypeNameLabel[i].Top =label3.Top ;
    TypeNameLabel[i].Text =TypeName[i];
    TypeNameLabel[i].AutoSize  =true;
    TypeNameLabel[i].Left =X[1,i]+polebold*JNum/2;
    this.Controls .Add (TypeNameLabel[i]);
   }

   TypeValueLabel = new System.Windows .Forms.Label[100,100];
 
   for(int i=1;i<=Num;i++)
   {
    for(int j=1;j<=JNum;j++)
    {
     TypeValueLabel[j,i]=new Label ();
     TypeValueLabel[j,i].Top =Y[j,i]-20 ;
     TypeValueLabel[j,i].Text =TypeValue[j,i];
     TypeValueLabel[j,i].AutoSize  =true;
     TypeValueLabel[j,i].Left =X[j,i];
     this.Controls .Add (TypeValueLabel[j,i]);
    }
   }
  }

  
  public void FlexDiagramBegain()//Flex Diagram 初始化
  {
   for(int i=1;i<=Num;i++)
   {
    GetXmlFileValue(PathFileName,"ID"+i.ToString (),ref TypeName[i]);
    for(int j=1;j<=JNum;j++)
    {
     GetXmlFileValue(PathFileName,"ID"+j.ToString()+"Num"+i.ToString (),ref TypeValue[j,i]);
    }
   }
   
   TypeNameLabel = new System.Windows .Forms.Label[100];

   for(int i=1;i<=Num;i++)
   {
    TypeNameLabel[i]=new Label ();
    TypeNameLabel[i].Top =label3.Top ;
    TypeNameLabel[i].Text =TypeName[i];
    TypeNameLabel[i].AutoSize  =true;
    TypeNameLabel[i].Left =(label3.Left -(label2.Left +label2.Width ))/Num*i-(label2.Left +label2.Width )-TypeNameLabel[i].Width /2;
    this.Controls .Add (TypeNameLabel[i]);
   }
   
   Max=Int32.Parse (TypeValue[1,1]);
   Min=Int32.Parse (TypeValue[1,1]);
   for(int i=1;i<=Num;i++)
   {
    for(int j=1;j<=JNum;j++)
    {
     if(Int32.Parse (TypeValue[j,i])>Max)
     {
      Max=Int32.Parse (TypeValue[j,i]);
     }
     if(Int32.Parse (TypeValue[j,i])<Min)
     {
      Min=Int32.Parse (TypeValue[j,i]);
     }
    }
   }

   for(int i=1;i<100;i++)
   {
    if(Max>(FormHeight-50))
    {
     HeightXS=HeightXS/2;
     Max=Max/2;
    }
    if(Max<(FormHeight-50)/2)
    {
     HeightXS=HeightXS*2;
     Max=Max*2;
    }
    if(Max<(FormHeight-50) && Max>(FormHeight-50)/2)
    {
     break;
    }
   }

   for(int i=1;i<=Num;i++)
   {
    for(int j=1;j<=JNum;j++)
    {
     X[j,i]=(label3.Left -(label2.Left +label2.Width ))/Num*i-(label2.Left +label2.Width );
     Y[j,i]=label3.Top-5-(Int32.Parse (TypeValue[j,i])*HeightXS/100);
     YY[j,i]=Int32.Parse (TypeValue[j,i]);
     YY[j,i]=YY[j,i]*HeightXS/100;
    }
   }
   
   TypeValueLabel = new System.Windows .Forms.Label[100,100];

   for(int i=1;i<=Num;i++)
   {
    for(int j=1;j<=JNum;j++)
    {
     TypeValueLabel[j,i]=new Label ();
     TypeValueLabel[j,i].Top =Y[j,i]-20 ;
     TypeValueLabel[j,i].Text =TypeValue[j,i];
     TypeValueLabel[j,i].AutoSize  =true;
     TypeValueLabel[j,i].Left =(label3.Left -(label2.Left +label2.Width ))/Num*i-(label2.Left +label2.Width )-TypeValueLabel[j,i].Width /2;
     this.Controls .Add (TypeValueLabel[j,i]);
    }
   }
  }

  public void CakyDiagramBegain()//饼形图初始化
  {
   for(int i=1;i<=Num;i++)
   {
    GetXmlFileValue(PathFileName,"ID"+i.ToString (),ref TypeName[i]);
    GetXmlFileValue(PathFileName,"ID1Num"+i.ToString (),ref TypeValue[1,i]);
   }

   for(int i=1;i<=Num;i++)
   {
    GetXmlFileValue(PathFileName,"ID1Num"+i.ToString (),ref appvalue);
    SweepAngl[i]=Int32.Parse (appvalue);
   }

   AllSweep=0;
   for(int i=1;i<=Num;i++)
   {
    AllSweep=AllSweep+SweepAngl[i];
   }

   for(int i=1;i<=Num;i++)
   {
    SweepAngl[i]=(SweepAngl[i]*360)/AllSweep;
   }

   //去掉白边
   int tempSw;
   for(int j=1;j<360;j++)
   {
    tempSw=0;
    for(int i=1;i<=Num;i++)
    {
     tempSw=tempSw+SweepAngl[i];
    }
    if(tempSw<360)
    {
     for(int k=1;k<=360-tempSw;k++)
     {
      if(k<Num)
      {
       SweepAngl[k]++;
      }
      else
      {
       break;
      }
     }
    }
    if(tempSw>=360)
    {
     break;
    }
   }

   StartAngl[1]=0;
   
   int tempAllSweep;
   for(int i=2;i<=Num;i++)
   {
    tempAllSweep=0;
    for(int j=1;j<=i-1;j++)
    {
     tempAllSweep=tempAllSweep+SweepAngl[j];
    }
    StartAngl[i]=tempAllSweep;
   }

   if(FormWidth>=FormHeight)
   {
    KuanDu=FormHeight*2/3;
   }
   else
   {
    KuanDu=FormWidth*2/3;
   }

   double Angle;

   TypeNameLabel = new System.Windows .Forms.Label[100];
   
   for(int i=1;i<=Num;i++)
   {
    Angle=(360-StartAngl[i]+90-SweepAngl[i]/2)*3.141592653579/180;

    TypeNameLabel[i]=new Label ();
    TypeNameLabel[i].Top =(int)((KuanDu+60)/2* Math.Cos (Angle))+(FormHeight/6+KuanDu/2);
    TypeNameLabel[i].Text =TypeName[i];
    TypeNameLabel[i].AutoSize  =true;
    TypeNameLabel[i].Left =(int)((KuanDu+60)/2* Math.Sin (Angle))+(FormWidth/6+KuanDu/2);
    this.Controls .Add (TypeNameLabel[i]);
   }

   TypeValueLabel = new System.Windows .Forms.Label[100,100];
 
   string tempstr1;

   for(int i=1;i<=Num;i++)
   {
    tempstr1=(Int32.Parse (TypeValue[1,i])*1.0/AllSweep*100.0).ToString()+"    ";
    TypeValueLabel[1,i]=new Label ();
    TypeValueLabel[1,i].Top =TypeNameLabel[i].Top  ;
    TypeValueLabel[1,i].Text =tempstr1.Substring(0,5)+"%";
    TypeValueLabel[1,i].AutoSize  =true;
    TypeValueLabel[1,i].Left =TypeNameLabel[i].Left+TypeNameLabel[i].Width +2;
    this.Controls .Add (TypeValueLabel[1,i]);
   }

  }

  #endregion

  private void ChartControl_Load(object sender, System.EventArgs e)
  {
   AllBegain();
  }

  #region Draw Diagram函数,2005 4 4 by hyc

  protected override void OnPaint(PaintEventArgs paintEvent)
  {
   Graphics g = paintEvent.Graphics;
   SolidBrush brush=new SolidBrush (Color.Blue );
   Pen pen=new Pen (Color.Black);
   Pen pen2=new Pen (Color.DarkGray );

   SolidBrush[] bb;
   bb=new SolidBrush [100];
   bb[1]=new SolidBrush (Color.DarkRed);
   bb[2]=new SolidBrush (Color.DarkSlateBlue);
   bb[3]=new SolidBrush (Color.DarkGray);
   bb[4]=new SolidBrush (Color.YellowGreen);
   bb[5]=new SolidBrush (Color.DarkSalmon);
   bb[6]=new SolidBrush (Color.DarkOrange);
   bb[7]=new SolidBrush (Color.LightYellow);
   bb[8]=new SolidBrush (Color.SlateBlue);
   bb[9]=new SolidBrush (Color.Black);
   bb[10]=new SolidBrush (Color.YellowGreen);
   bb[11]=new SolidBrush (Color.DarkSeaGreen);
   bb[12]=new SolidBrush (Color.DarkSlateGray);
   bb[13]=new SolidBrush (Color.DarkTurquoise);
   bb[14]=new SolidBrush (Color.DarkViolet);
   bb[15]=new SolidBrush (Color.DeepPink);

   Pen[] pp;
   pp=new Pen [100];
   pp[1]=new Pen (Color.DarkRed);
   pp[2]=new Pen (Color.DarkSlateBlue);
   pp[3]=new Pen (Color.DarkGray);
   pp[4]=new Pen (Color.YellowGreen);
   pp[5]=new Pen (Color.DarkSalmon);
   pp[6]=new Pen (Color.DarkOrange);
   pp[7]=new Pen (Color.LightYellow);
   pp[8]=new Pen (Color.SlateBlue);
   pp[9]=new Pen (Color.Black);
   pp[10]=new Pen (Color.YellowGreen);
   pp[11]=new Pen (Color.DarkSeaGreen);
   pp[12]=new Pen (Color.DarkSlateGray);
   pp[13]=new Pen (Color.DarkTurquoise);
   pp[14]=new Pen (Color.DarkViolet);
   pp[15]=new Pen (Color.DeepPink);
   
   
   GetXmlFileValue(PathFileName,"DiagramType",ref appvalue);
   switch(appvalue)
   {
    case "histogram"://柱形图
     HistogramBegain();
     g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label3.Left+label3.Width,label3.Top-5);
     g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label2.Left +label2.Width ,label2.Top-5);

     
     for(int i=1;i<=Num;i++)
     {
      for(int j=1;j<=JNum;j++)
      {
       g.FillRectangle(bb[j],X[j,i],Y[j,i],polebold,YY[j,i]);
      }
     
     }
     break;
    case"flexdiagram"://折线图
     FlexDiagramBegain();
     g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label3.Left+label3.Width,label3.Top-5);
     g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label2.Left +label2.Width ,label2.Top-5);

     for(int i=1;i<Num;i++)
     {
      for(int j=1;j<=JNum;j++)
      {
       g.DrawLine (pp[j],X[j,i],Y[j,i],X[j,i+1],Y[j,i+1]);
      }
     }
     for(int i=1;i<=Num;i++)
     {
      for(int j=1;j<=JNum;j++)
      {
       g.DrawLine(pen2,X[j,i],Y[j,i],X[j,i],label3.Top-5);
      }
     }
     break;
    case"cakydiagram"://饼形图
     CakyDiagramBegain();
     g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label3.Left+label3.Width,label3.Top-5);
     g.DrawLine (pen,label2.Left +label2.Width ,label3.Top-5,label2.Left +label2.Width ,label2.Top-5);

     for(int i=1;i<=Num;i++)
     {
      g.FillPie (bb[i],FormWidth/6,FormHeight/6,KuanDu,KuanDu,StartAngl[i],SweepAngl[i]);
     }
     break;

    default:

     break;
   }

  }

  
  #endregion
 }
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//XML文件内容,此文件必须放在应用程序目录,文件名XMLChart.xml

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="DiagramType" value="histogram" />
    <add key="DiagramName" value="1-12月产品数量对比" />
    <add key="XName" value="月份" />
    <add key="YName" value="数量" />
    <add key="JNum" value="2" />
    <add key="Num" value="5" />
    <add key="Text" value="yes" />
    <add key="ID1" value="1月" />
    <add key="ID2" value="2月" />
    <add key="ID3" value="3月" />
    <add key="ID4" value="4月" />
    <add key="ID5" value="5月" />
    <add key="ID6" value="6月" />
    <add key="ID7" value="7月" />
    <add key="ID8" value="8月" />
    <add key="ID9" value="9月" />
    <add key="ID10" value="10月" />
    <add key="ID11" value="11月" />
    <add key="ID12" value="12月" />
    <add key="ID13" value="1月" />
    <add key="ID14" value="2月" />
    <add key="ID15" value="3月" />
    <add key="ID16" value="4月" />
    <add key="ID17" value="5月" />
    <add key="ID18" value="6月" />
    <add key="ID19" value="7月" />
    <add key="ID20" value="8月" />
    <add key="ID21" value="9月" />
    <add key="ID22" value="10月" />
    <add key="ID23" value="11月" />
    <add key="ID24" value="12月" />
    <add key="ID25" value="1月" />
    <add key="ID1Num1" value="9" />
    <add key="ID1Num2" value="5" />
    <add key="ID1Num3" value="6" />
    <add key="ID1Num4" value="7" />
    <add key="ID1Num5" value="4" />
    <add key="ID1Num6" value="6" />
    <add key="ID1Num7" value="5" />
    <add key="ID1Num8" value="3" />
    <add key="ID1Num9" value="2" />
    <add key="ID1Num10" value="1" />
    <add key="ID1Num11" value="2" />
    <add key="ID1Num12" value="2" />
    <add key="ID1Num13" value="2" />
    <add key="ID1Num14" value="2" />
    <add key="ID1Num15" value="2" />
    <add key="ID1Num16" value="2" />
    <add key="ID1Num17" value="2" />
    <add key="ID1Num18" value="2" />
    <add key="ID1Num19" value="2" />
    <add key="ID1Num20" value="2" />
    <add key="ID1Num21" value="2" />
    <add key="ID1Num22" value="2" />
    <add key="ID1Num23" value="2" />
    <add key="ID1Num24" value="2" />
    <add key="ID1Num25" value="2" />
    <add key="ID2Num1" value="4" />
    <add key="ID2Num2" value="5" />
    <add key="ID2Num3" value="4" />
    <add key="ID2Num4" value="1" />
    <add key="ID2Num5" value="5" />
    <add key="ID2Num6" value="3" />
    <add key="ID2Num7" value="4" />
    <add key="ID2Num8" value="1" />
    <add key="ID2Num9" value="2" />
    <add key="ID2Num10" value="4" />
    <add key="ID2Num11" value="5" />
    <add key="ID2Num12" value="2" />
    <add key="ID2Num13" value="2" />
    <add key="ID2Num14" value="2" />
    <add key="ID2Num15" value="2" />
    <add key="ID2Num16" value="2" />
    <add key="ID2Num17" value="2" />
    <add key="ID2Num18" value="2" />
    <add key="ID2Num19" value="2" />
    <add key="ID2Num20" value="2" />
    <add key="ID2Num21" value="2" />
    <add key="ID2Num22" value="2" />
    <add key="ID2Num23" value="2" />
    <add key="ID2Num24" value="2" />
    <add key="ID2Num25" value="2" />
    <add key="ID3Num1" value="4" />
    <add key="ID3Num2" value="5" />
    <add key="ID3Num3" value="6" />
    <add key="ID3Num4" value="1" />
    <add key="ID3Num5" value="2" />
    <add key="ID3Num6" value="2" />
    <add key="ID3Num7" value="5" />
    <add key="ID3Num8" value="2" />
    <add key="ID3Num9" value="5" />
    <add key="ID3Num10" value="7" />
    <add key="ID3Num11" value="9" />
    <add key="ID3Num12" value="2" />
    <add key="ID3Num13" value="2" />
    <add key="ID3Num14" value="2" />
    <add key="ID3Num15" value="2" />
    <add key="ID3Num16" value="2" />
    <add key="ID3Num17" value="2" />
    <add key="ID3Num18" value="2" />
    <add key="ID3Num19" value="2" />
    <add key="ID3Num20" value="2" />
    <add key="ID3Num21" value="2" />
    <add key="ID3Num22" value="2" />
    <add key="ID3Num23" value="2" />
    <add key="ID3Num24" value="2" />
    <add key="ID3Num25" value="2" />
    <add key="ID4Num1" value="2" />
    <add key="ID4Num2" value="5" />
    <add key="ID4Num3" value="4" />
    <add key="ID4Num4" value="2" />
    <add key="ID4Num5" value="4" />
    <add key="ID4Num6" value="3" />
    <add key="ID4Num7" value="1" />
    <add key="ID4Num8" value="1" />
    <add key="ID4Num9" value="4" />
    <add key="ID4Num10" value="5" />
    <add key="ID4Num11" value="8" />
    <add key="ID4Num12" value="2" />
    <add key="ID4Num13" value="2" />
    <add key="ID4Num14" value="2" />
    <add key="ID4Num15" value="2" />
    <add key="ID4Num16" value="2" />
    <add key="ID4Num17" value="2" />
    <add key="ID4Num18" value="2" />
    <add key="ID4Num19" value="2" />
    <add key="ID4Num20" value="2" />
    <add key="ID4Num21" value="2" />
    <add key="ID4Num22" value="2" />
    <add key="ID4Num23" value="2" />
    <add key="ID4Num24" value="2" />
    <add key="ID4Num25" value="2" />
    <add key="ID5Num1" value="2" />
    <add key="ID5Num2" value="5" />
    <add key="ID5Num3" value="4" />
    <add key="ID5Num4" value="2" />
    <add key="ID5Num5" value="4" />
    <add key="ID5Num6" value="3" />
    <add key="ID5Num7" value="1" />
    <add key="ID5Num8" value="1" />
    <add key="ID5Num9" value="4" />
    <add key="ID5Num10" value="5" />
    <add key="ID5Num11" value="8" />
    <add key="ID5Num12" value="2" />
    <add key="ID5Num13" value="2" />
    <add key="ID5Num14" value="2" />
    <add key="ID5Num15" value="2" />
    <add key="ID5Num16" value="2" />
    <add key="ID5Num17" value="2" />
    <add key="ID5Num18" value="2" />
    <add key="ID5Num19" value="2" />
    <add key="ID5Num20" value="2" />
    <add key="ID5Num21" value="2" />
    <add key="ID5Num22" value="2" />
    <add key="ID5Num23" value="2" />
    <add key="ID5Num24" value="2" />
    <add key="ID5Num25" value="2" />
    <add key="ID6Num1" value="2" />
    <add key="ID6Num2" value="5" />
    <add key="ID6Num3" value="4" />
    <add key="ID6Num4" value="2" />
    <add key="ID6Num5" value="4" />
    <add key="ID6Num6" value="3" />
    <add key="ID6Num7" value="1" />
    <add key="ID6Num8" value="1" />
    <add key="ID6Num9" value="4" />
    <add key="ID6Num10" value="5" />
    <add key="ID6Num11" value="8" />
    <add key="ID6Num12" value="2" />
    <add key="ID6Num13" value="2" />
    <add key="ID6Num14" value="2" />
    <add key="ID6Num15" value="2" />
    <add key="ID6Num16" value="2" />
    <add key="ID6Num17" value="2" />
    <add key="ID6Num18" value="2" />
    <add key="ID6Num19" value="2" />
    <add key="ID6Num20" value="2" />
    <add key="ID6Num21" value="2" />
    <add key="ID6Num22" value="2" />
    <add key="ID6Num23" value="2" />
    <add key="ID6Num24" value="2" />
    <add key="ID6Num25" value="2" />
    <add key="ID7Num1" value="2" />
    <add key="ID7Num2" value="5" />
    <add key="ID7Num3" value="4" />
    <add key="ID7Num4" value="2" />
    <add key="ID7Num5" value="4" />
    <add key="ID7Num6" value="3" />
    <add key="ID7Num7" value="1" />
    <add key="ID7Num8" value="1" />
    <add key="ID7Num9" value="4" />
    <add key="ID7Num10" value="5" />
    <add key="ID7Num11" value="8" />
    <add key="ID7Num12" value="2" />
    <add key="ID7Num13" value="2" />
    <add key="ID7Num14" value="2" />
    <add key="ID7Num15" value="2" />
    <add key="ID7Num16" value="2" />
    <add key="ID7Num17" value="2" />
    <add key="ID7Num18" value="2" />
    <add key="ID7Num19" value="2" />
    <add key="ID7Num20" value="2" />
    <add key="ID7Num21" value="2" />
    <add key="ID7Num22" value="2" />
    <add key="ID7Num23" value="2" />
    <add key="ID7Num24" value="2" />
    <add key="ID7Num25" value="2" />
    <add key="ID8Num1" value="2" />
    <add key="ID8Num2" value="5" />
    <add key="ID8Num3" value="4" />
    <add key="ID8Num4" value="2" />
    <add key="ID8Num5" value="4" />
    <add key="ID8Num6" value="3" />
    <add key="ID8Num7" value="1" />
    <add key="ID8Num8" value="1" />
    <add key="ID8Num9" value="4" />
    <add key="ID8Num10" value="5" />
    <add key="ID8Num11" value="8" />
    <add key="ID8Num12" value="2" />
    <add key="ID8Num13" value="2" />
    <add key="ID8Num14" value="2" />
    <add key="ID8Num15" value="2" />
    <add key="ID8Num16" value="2" />
    <add key="ID8Num17" value="2" />
    <add key="ID8Num18" value="2" />
    <add key="ID8Num19" value="2" />
    <add key="ID8Num20" value="2" />
    <add key="ID8Num21" value="2" />
    <add key="ID8Num22" value="2" />
    <add key="ID8Num23" value="2" />
    <add key="ID8Num24" value="2" />
    <add key="ID8Num25" value="2" />  
    <add key="ID9Num1" value="2" />
    <add key="ID9Num2" value="5" />
    <add key="ID9Num3" value="4" />
    <add key="ID9Num4" value="2" />
    <add key="ID9Num5" value="4" />
    <add key="ID9Num6" value="3" />
    <add key="ID9Num7" value="1" />
    <add key="ID9Num8" value="1" />
    <add key="ID9Num9" value="4" />
    <add key="ID9Num10" value="5" />
    <add key="ID9Num11" value="8" />
    <add key="ID9Num12" value="2" />
    <add key="ID9Num13" value="2" />
    <add key="ID9Num14" value="2" />
    <add key="ID9Num15" value="2" />
    <add key="ID9Num16" value="2" />
    <add key="ID9Num17" value="2" />
    <add key="ID9Num18" value="2" />
    <add key="ID9Num19" value="2" />
    <add key="ID9Num20" value="2" />
    <add key="ID9Num21" value="2" />
    <add key="ID9Num22" value="2" />
    <add key="ID9Num23" value="2" />
    <add key="ID9Num24" value="2" />
    <add key="ID9Num25" value="2" />
    <add key="ID10Num1" value="2" />
    <add key="ID10Num2" value="5" />
    <add key="ID10Num3" value="4" />
    <add key="ID10Num4" value="2" />
    <add key="ID10Num5" value="4" />
    <add key="ID10Num6" value="3" />
    <add key="ID10Num7" value="1" />
    <add key="ID10Num8" value="1" />
    <add key="ID10Num9" value="4" />
    <add key="ID10Num10" value="5" />
    <add key="ID10Num11" value="8" />
    <add key="ID10Num12" value="2" />
    <add key="ID10Num13" value="2" />
    <add key="ID10Num14" value="2" />
    <add key="ID10Num15" value="2" />
    <add key="ID10Num16" value="2" />
    <add key="ID10Num17" value="2" />
    <add key="ID10Num18" value="2" />
    <add key="ID10Num19" value="2" />
    <add key="ID10Num20" value="2" />
    <add key="ID10Num21" value="2" />
    <add key="ID10Num22" value="2" />
    <add key="ID10Num23" value="2" />
    <add key="ID10Num24" value="2" />
    <add key="ID10Num25" value="2" />           
   </appSettings>
</configuration>

时间: 2024-09-21 18:47:24

柱形图 和 折线图 饼形图控件的相关文章

Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美

Android绘图机制(四)--使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美 这里为什么不继续把自定义View写下去呢,因为最近项目很急,个人能力也有限,所以就在网上找到一些开源的框架使用,不是MPAndroidChart,也不是AChartEngine ,而是HelloCharts 开源地 址:https://github.com/lecho/hellocharts-android 这次主要是翻译了一些注释和简化了一下项目的结

[控件] 画饼状图的控件

画饼状图的控件   效果 注意:支持遮罩效果   源码 https://github.com/YouXianMing/UI-Component-Collection // // CircleView.h // YXMWeather // // Created by XianMingYou on 15/5/12. // Copyright (c) 2015年 XianMingYou. All rights reserved. // #import <UIKit/UIKit.h> @interfa

如图gridview控件分页问题 按 下一页 上一页 都不能跳转 是什么原因!!求大神啊

问题描述 前端代码:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Gridview.aspx.cs"Inherits="gridview"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xh

Android自定义控件实现简单的轮播图控件_Android

最近要做一个轮播图的效果,网上看了几篇文章,基本上都能找到实现,效果还挺不错,但是在写的时候感觉每次都要单独去重新在Activity里写一堆代码.于是自己封装了一下.本篇轮播图实现原理原文出处:循环广告位组件的实现,这里只是做了下封装成一个控件,不必每次重复写代码了. 效果图: 实现分析 轮播图的功能就是实现左右滑动的广告.图片信息展示,那我们就用ViewPager来实现,由于考虑到用户体验,我们还需要在下面加一个指示器来标示滑动到了第几张轮播图.指示器我们可以用一个线性布局来根据要展示的轮播图

Android自定义控件实现简单的轮播图控件

最近要做一个轮播图的效果,网上看了几篇文章,基本上都能找到实现,效果还挺不错,但是在写的时候感觉每次都要单独去重新在Activity里写一堆代码.于是自己封装了一下.本篇轮播图实现原理原文出处:循环广告位组件的实现,这里只是做了下封装成一个控件,不必每次重复写代码了. 效果图: 实现分析 轮播图的功能就是实现左右滑动的广告.图片信息展示,那我们就用ViewPager来实现,由于考虑到用户体验,我们还需要在下面加一个指示器来标示滑动到了第几张轮播图.指示器我们可以用一个线性布局来根据要展示的轮播图

用C#编写ActiveX控件(一)

active|activex|控件  前些日子做一个Web项目,必须自己编写一个ActiveX控件.如今的ActiveX控件大多是使用VB/C++来开发的,而我对他们并不熟悉,因此考虑使用熟悉的C#编写ActiveX控件.     首先,建立一个WinForm控件项目HelloWorld,并拖入一个Label控件,文字设为HelloWorld,如图:   UserControl1.cs内容如下:  using System;  using System.Collections;  using S

详细阐述利用ASP.NET 2.0创建自定义Web控件开发说明

asp.net|web|创建|控件|控件开发 简介 从使用基本的文本编辑器到创作标记页面,Web 开发已经经历了一个漫长的过程.目前,集成开发环境 (IDE) 为开发过程中的几乎每个方面都提供了图形化表示形式.此外,还实现各种说明性编程技术以提高效率并降低出现错误的几率.Visual Studio 2005 和 ASP.NET 2.0 中的控件体系结构遵循了这些编程趋势,并且提供了可靠的.可扩展的环境,该环境设计为使开发人员可以创建能够以说明方式配置的控件. 此外,ASP.NET 中新的自适应呈

在VS.NET下创建文件上载控件

创建|控件 在VS.NET下创建文件上载控件 前言:还记得在asp3.0里,我们为了上载文件可真是煞费苦心,写了一大堆的代码,可执行起来还是那么慢.但在asp.net里这个问题可以轻松搞定,这篇文章我们就探讨如何建立一个用户自定义的文件上载控件,并在我们的.ASPX程序中使用它.正文第一步:开发自定义文件上载控件打开VS.NET,建立一个工程:WebApp,我们使用WebApp项目来做我们的工作.在项目WebApp上点右健选择Add下的Add Web User Control-,这时我们就可以建

Cutting Edge:为ASP.NET控件加入快捷菜单(2)

asp.net|菜单|控件 Cutting Edge:为ASP.NET控件加入快捷菜单(2)英文原文:Adding a Context Menu to ASP.NET Controls作者:Dino Esposito翻译:刘瑞才源码:CuttingEdge0502.exe 编程接口 我们的ContextMenu控件从WebControl继承并执行INamingContainer接口 public class ContextMenu : WebControl, INamingContainer 图