下載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
線狀圖
柱狀圖