下载ZedGraph.dll,在工具箱添加 ,然后将空间拖入界面,,
ZedGraph.dll下载地址 : http://download.csdn.net/detail/happy09li/4276410
参考资料 点击打开链接
private void Form9_Load(object sender, EventArgs e)
{
DataTable dt =Returntable();
double[] arrvalues = new double[dt.Rows.Count];
Color[] colors = new Color[dt.Rows.Count];
string[] names = new string[dt.Rows.Count];
for (int j = 0; j < dt.Rows.Count; j++)
{
names[j] = dt.Rows[j]["Name"].ToString();//显示的名称
string doccount = dt.Rows[j]["Num"].ToString();//显示个数
arrvalues[j] = double.Parse(doccount);
colors[j] = GetColor();
}
bindStat(arrvalues, names, colors);
}
private DataTable Returntable()
{
DataTable dt = new DataTable();
dt.Columns.Add("Name");
dt.Columns.Add("Num");
for (int i = 0; i < 20; i++)
{
DataRow dr = dt.NewRow();
dr["Num"] = i;
dr["Name"] = DateTime.Now.ToString("yyyyMMdd") + i;
dt.Rows.Add(dr);
}
return dt;
}
/// <summary>
/// 随机成一个颜色
/// </summary>
/// <returns></returns>
private Color GetColor()
{
Random RandomNum_First = new Random((int)DateTime.Now.Ticks);
// 对于C#的随机数,没什么好说的
System.Threading.Thread.Sleep(RandomNum_First.Next(100));
Random RandomNum_Sencond = new Random((int)DateTime.Now.Ticks);
// 为了在白色背景上显示,尽量生成深色
int int_Red = RandomNum_First.Next(256);
int int_Green = RandomNum_Sencond.Next(256);
int int_Blue = (int_Red + int_Green > 400) ? 0 : 400 - int_Red - int_Green;
int_Blue = (int_Blue > 255) ? 255 : int_Blue;
return Color.FromArgb(int_Red, int_Green, int_Blue);
}
private void bindStat(double[] arrvalues, string[] titles, Color[] colors)
{
this.zedGraphCompare.GraphPane.XAxis.Title.Text = "姓名";
this.zedGraphCompare.GraphPane.CurveList.Clear();
this.zedGraphCompare.GraphPane.GraphObjList.Clear();
this.zedGraphCompare.GraphPane.XAxis.Type = ZedGraph.AxisType.DateAsOrdinal;
this.zedGraphCompare.GraphPane.Fill = new Fill(Color.White, Color.LightSkyBlue, 45.0f);
this.zedGraphCompare.GraphPane.Chart.Fill = new Fill(Color.White, Color.LightSeaGreen, 45.0f);
double[] arrValues = new double[titles.Length];
string[] xtitles = titles;
this.zedGraphCompare.GraphPane.YAxis.Scale.Min = 0;
for (int i = 0; i < titles.Length; i++)
{
for (int m = 0; m < titles.Length; m++)
{
if (i == m)
{
arrValues[m] = arrvalues[m];
}
else
{
arrValues[m] = 0;
}
}
BarItem myBar = this.zedGraphCompare.GraphPane.AddBar(titles[i], null, arrValues, colors[i]);
myBar.Bar.Fill = new Fill(colors[i], Color.White, colors[i]);
myBar.Bar.Border.Color = Color.Transparent;
// LineItem myBar = this.zedGraphCompare.GraphPane.AddCurve(titles[i], null, arrValues, colors[i]); //线状图,注释上面3行代码
this.zedGraphCompare.GraphPane.Tag = titles[i];
if (!arrValues[i].ToString().Equals("0"))
{
TextObj va = new TextObj(arrValues[i].ToString(), i + 1, arrValues[i] + 0.6, CoordType.AxisXYScale, AlignH.Center, AlignV.Center);
va.FontSpec = new FontSpec("宋体", 8, Color.Black, false, false, true);//显示个数字体大小
va.FontSpec.IsUnderline = false;
va.FontSpec.Fill.Color = Color.Transparent;
va.FontSpec.Border.IsVisible = false; // 是否有边框
this.zedGraphCompare.GraphPane.GraphObjList.Add(va); // 填充
}
}
this.zedGraphCompare.GraphPane.YAxis.MinSpace = 0;
//让X坐标名字竖着显示
List<string> list = new List<string>();
for (int i = 0; i < xtitles.Length; i++)
{
string value = "";
for (int j = 0; j < xtitles[i].Length; j++)
{
value += xtitles[i][j] + "\r\n";
}
list.Add(value);
}
string[] listvalue = new string[list.Count];
for (int k = 0; k < list.Count; k++)
{
listvalue[k] = list[k];
}
this.zedGraphCompare.GraphPane.XAxis.Scale.TextLabels = listvalue;
this.zedGraphCompare.GraphPane.XAxis.Scale.FontSpec.Size = 8;
//this.zedGraphCompare.GraphPane.XAxis.Scale.FontSpec.Angle = 270;
//this.zedGraphCompare.GraphPane.XAxis.Scale.FontSpec.
this.zedGraphCompare.GraphPane.XAxis.Type = AxisType.Text;
this.zedGraphCompare.GraphPane.BarSettings.Type = BarType.Overlay;
this.zedGraphCompare.GraphPane.YAxis.Scale.MajorStep = 5;
this.zedGraphCompare.GraphPane.XAxis.MajorTic.IsBetweenLabels = true;
this.zedGraphCompare.AxisChange();
this.zedGraphCompare.Refresh();
}
/// <summary>
/// 汉化右键菜单
/// </summary>
/// <param name="sender"></param>
/// <param name="menuStrip"></param>
/// <param name="mousePt"></param>
/// <param name="objState"></param>
private void zgcount_ContextMenuBuilder(ZedGraphControl sender, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState)
{
foreach (ToolStripMenuItem item in menuStrip.Items)
{
if ((string)item.Tag == "copy")
{
item.Text = "复制";
}
if ((string)item.Tag == "page_setup")
{
item.Text = "页面设置";
}
if ((string)item.Tag == "print")
{
item.Text = "打印";
}
if ((string)item.Tag == "save_as")
{
item.Text = "另存图表";
}
if ((string)item.Tag == "set_default")
{
item.Text = "恢复默认大小";
}
if ((string)item.Tag == "show_val")
{
item.Text = "显示节点数值";
}
if ((string)item.Tag == "undo_all")
{
item.Text = "还原缩放/移动";
}
if ((string)item.Tag == "unzoom")
{
item.Text = "还原缩放";
}
}
}
}
}
这里只是做了个柱状图的例子,,ZedGraph控件可以做很多类型的统计,详情如下链接。
详情http://www.cnblogs.com/peterzb/archive/2009/07/19/1526726.html
线状图
柱状图