平時在做開發的時候經常會遇到製作圖表,很多人會選擇第三方庫來實現,其實在開發winform應用程序的時候我們就發現微軟給我們提供了一個chart控件,這個控件非常強大,今天我就來做一個很簡單的柱形圖來演示一下。我們先看一下程序運行畫面:
具體實現步驟如下:
打開visual studio 新建一個winform應用程序,在設計器中添加一個chart控件,設置chart控件的dock屬性為Fill
注意:手動添加名字空間System.Windows.Forms.DataVisualization.Charting
在load事件中給chart控件添加series titles legends chartArea
- 添加series 一個柱形 一個線條
string seriesName = "柱狀圖";
chart1.Series.Add(seriesName);
chart1.Series[seriesName].ChartType = SeriesChartType.Column;//這裡設置圖表類型 餅圖 線圖 柱狀等等
chart1.Series[seriesName].Color = Color.FromArgb(0x00, 0xA2, 0xE8);
chart1.Series[seriesName].IsValueShownAsLabel = true;
chart1.Series[seriesName].MarkerStyle = MarkerStyle.Circle;
chart1.Series[seriesName].MarkerColor = Color.Lime;
chart1.Series[seriesName].LabelForeColor = Color.Red;
chart1.Series[seriesName].LabelAngle = -90;
seriesName = "曲線圖";
chart1.Series.Add(seriesName);
chart1.Series[seriesName].ChartType = SeriesChartType.Spline;//這裡設置圖表類型 線圖
chart1.Series[seriesName].Color = Color.Red;
2.添加titles
//添加標題
chart1.Titles.Add("柱狀圖與曲線圖");
chart1.Titles[0].Font = new Font("微軟雅黑", 12);
chart1.Titles[0].Docking = Docking.Bottom;
chart1.Titles[0].ForeColor = Color.White;
3.添加legends
//設置圖例
chart1.Legends[0].Docking = Docking.Top;
chart1.Legends[0].Alignment = StringAlignment.Center;
chart1.Legends[0].BackColor = Color.Transparent;
chart1.Legends[0].ForeColor = Color.White;
4.添加chartArea
//設置XY軸
chart1.ChartAreas[0].AxisX.Title = "序號";
chart1.ChartAreas[0].AxisY.Title = "數值";
chart1.ChartAreas[0].AxisX.TitleAlignment = StringAlignment.Far;
chart1.ChartAreas[0].AxisY.TitleAlignment = StringAlignment.Far;
chart1.ChartAreas[0].AxisX.TitleForeColor = Color.White;
chart1.ChartAreas[0].AxisY.TitleForeColor = Color.White;
chart1.ChartAreas[0].AxisX.LabelStyle = new LabelStyle() { ForeColor = Color.White };
chart1.ChartAreas[0].AxisY.LabelStyle = new LabelStyle() { ForeColor = Color.White };
chart1.ChartAreas[0].AxisX.LineColor = Color.White;
chart1.ChartAreas[0].AxisY.LineColor = Color.White;
chart1.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.None;
chart1.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.None;
chart1.ChartAreas[0].AxisX.Interval = 1;
chart1.ChartAreas[0].AxisY.Interval = 2;
//設置網格
chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.FromArgb(0x03, 0x0D, 0xA9);
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.FromArgb(0x03, 0x0D, 0xA9);
chart1.ChartAreas[0].AxisX.MajorGrid.Interval = 20;
chart1.ChartAreas[0].AxisY.MajorGrid.Interval = 2;
5.設置chart控件的風格
//設置圖表的風格
chart1.BackColor = Color.FromArgb(0x03, 0x0D, 0xA9);
chart1.ChartAreas[0].BackColor = Color.FromArgb(0x03, 0x0D, 0xA9);
chart1.ForeColor = Color.Red;
//將series的顏色設置為好看的漸變顏色
chart1.Series[0].BackGradientStyle = GradientStyle.DiagonalRight;
下面是完整的代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
chart1.Series.Clear();
string seriesName = "柱狀圖";
//添加series
chart1.Series.Add(seriesName);
chart1.Series[seriesName].ChartType = SeriesChartType.Column;//這裡設置圖表類型 餅圖 線圖 柱狀等等
chart1.Series[seriesName].Color = Color.FromArgb(0x00, 0xA2, 0xE8);
chart1.Series[seriesName].IsValueShownAsLabel = true;
chart1.Series[seriesName].MarkerStyle = MarkerStyle.Circle;
chart1.Series[seriesName].MarkerColor = Color.Lime;
chart1.Series[seriesName].LabelForeColor = Color.Red;
chart1.Series[seriesName].LabelAngle = -90;
seriesName = "曲線圖";
chart1.Series.Add(seriesName);
chart1.Series[seriesName].ChartType = SeriesChartType.Spline;//這裡設置圖表類型 線圖
chart1.Series[seriesName].Color = Color.Red;
//設置標題
chart1.Titles.Add("柱狀圖與曲線圖");
chart1.Titles[0].Font = new Font("微軟雅黑", 12);
chart1.Titles[0].Docking = Docking.Bottom;
chart1.Titles[0].ForeColor = Color.White;
//設置圖表的風格
chart1.BackColor = Color.FromArgb(0x03, 0x0D, 0xA9);
chart1.ChartAreas[0].BackColor = Color.FromArgb(0x03, 0x0D, 0xA9);
chart1.ForeColor = Color.Red;
//設置圖例
chart1.Legends[0].Docking = Docking.Top;
chart1.Legends[0].Alignment = StringAlignment.Center;
chart1.Legends[0].BackColor = Color.Transparent;
chart1.Legends[0].ForeColor = Color.White;
//設置XY軸
chart1.ChartAreas[0].AxisX.Title = "序號";
chart1.ChartAreas[0].AxisY.Title = "數值";
chart1.ChartAreas[0].AxisX.TitleAlignment = StringAlignment.Far;
chart1.ChartAreas[0].AxisY.TitleAlignment = StringAlignment.Far;
chart1.ChartAreas[0].AxisX.TitleForeColor = Color.White;
chart1.ChartAreas[0].AxisY.TitleForeColor = Color.White;
chart1.ChartAreas[0].AxisX.LabelStyle = new LabelStyle() { ForeColor = Color.White };
chart1.ChartAreas[0].AxisY.LabelStyle = new LabelStyle() { ForeColor = Color.White };
chart1.ChartAreas[0].AxisX.LineColor = Color.White;
chart1.ChartAreas[0].AxisY.LineColor = Color.White;
chart1.ChartAreas[0].AxisX.ArrowStyle = AxisArrowStyle.None;
chart1.ChartAreas[0].AxisY.ArrowStyle = AxisArrowStyle.None;
chart1.ChartAreas[0].AxisX.Interval = 1;
chart1.ChartAreas[0].AxisY.Interval = 2;
//設置網格
chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.FromArgb(0x03, 0x0D, 0xA9);
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.FromArgb(0x03, 0x0D, 0xA9);
chart1.ChartAreas[0].AxisX.MajorGrid.Interval = 20;
chart1.ChartAreas[0].AxisY.MajorGrid.Interval = 2;
//將series的顏色設置為好看的漸變顏色
chart1.Series[0].BackGradientStyle = GradientStyle.DiagonalRight;
RefreshData();
}
/// <summary>
/// 隨機產生一些數據
///
public void RefreshData()
{
List
List
Random ra = new Random();
for (int i = 0; i < x1.Count; i++)
{
y1.Add(ra.Next(1, 10));
}
RefreshChart(x1, y1);
}
public delegate void RefDataDelegate(List
public void RefreshChart(List
{
//在實際開發當中經常會用到定時更新數據 跨線程調用
if (this.chart1.InvokeRequired)
{
RefDataDelegate stcb = new RefDataDelegate(RefreshChart);
this.Invoke(stcb, new object[] { x, y });
}
else
{
chart1.Series[0].Points.DataBindXY(x, y);
chart1.Series[1].Points.DataBindXY(x, y);
}
}
}
}
閱讀更多 路馬編程 的文章