原文出自http://blog.csdn.net/dannyiscoder/article/details/70768230
1.首先拖動chart控件到窗體,設置chart1的屬性Legends中默認的Legend1的Enable為false;
2.設置Series的ChartType為Line
3.后台綁定數據
List<string> xData = new List<string>() { "A", "B", "C", "D" };
List<int> yData = new List<int>() { 10, 20, 30, 40 };
chart1.Series[0]["PieLabelStyle"] = "Outside";//將文字移到外側
chart1.Series[0]["PieLineColor"] = "Black";//繪制黑色的連線。
chart1.Series[0].Points.DataBindXY(xData, yData);
4.chant控件自帶的信息提示為ToolTip(映射區),如圖1所示:
圖1
5.在窗體加載中可通過如下代碼定義需要顯示的提示信息,代碼如下:
private void Form3_Load(object sender, EventArgs e)
{
List<string> xData = new List<string>() { "1", "2", "3", "4" };
List<int> yData = new List<int>() { 10, 20, 30, 40 };
//線條顏色
chart1.Series[0].Color = Color.Green;
//線條粗細
chart1.Series[0].BorderWidth = 2;
//標記點邊框顏色
chart1.Series[0].MarkerBorderColor = Color.Blue;
//標記點邊框大小
chart1.Series[0].MarkerBorderWidth = 3; //chart1.;// Xaxis
//標記點中心顏色
chart1.Series[0].MarkerColor = Color.White;//AxisColor
//標記點大小
chart1.Series[0].MarkerSize = 8;
//標記點類型
chart1.Series[0].MarkerStyle = MarkerStyle.Circle;
//需要提示的信息
chart1.Series[0].ToolTip = "當前年份:#VAL\n最高分:#MAX\n最低分:#Min";
//將文字移到外側
chart1.Series[0]["PieLabelStyle"] = "Outside";
//繪制黑色的連線
chart1.Series[0]["PieLineColor"] = "Black";
chart1.Series[0].Points.DataBindXY(xData, yData);
}
6.效果如下圖2,3所示:
圖2
圖3
注:為了自定義提示信息的樣式,我自己定義了一個提示框,通過如下方法進行顯示
7.在form窗體上畫提示框,(使用兩個panel合並三個label),效果如圖4所示:
圖4
8.使用chart控件的工具提示事件,如圖5所示:
圖5
9.(1)初始窗體方法中隱藏自定義提示信息,代碼如下:
public Form3()
{
InitializeComponent();
this.panel1.Visible = false;
}
(2)在窗體加載方法里綁定鼠標懸停工具提示事件,代碼如下:
private void Form3_Load(object sender, EventArgs e)
{
//懸停工具提示事件
chart1.GetToolTipText += new EventHandler<ToolTipEventArgs>(chart1_GetToolTipText);
List<string> xData = new List<string>() { "1", "2", "3", "4" };
List<int> yData = new List<int>() { 10, 20, 30, 40 };
//線條顏色
chart1.Series[0].Color = Color.Green;
//線條粗細
chart1.Series[0].BorderWidth = 2;
//標記點邊框顏色
chart1.Series[0].MarkerBorderColor = Color.Blue;
//標記點邊框大小
chart1.Series[0].MarkerBorderWidth = 3; //chart1.;// Xaxis
//標記點中心顏色
chart1.Series[0].MarkerColor = Color.White;//AxisColor
//標記點大小
chart1.Series[0].MarkerSize = 8;
//標記點類型
chart1.Series[0].MarkerStyle = MarkerStyle.Circle;//MarkerStyle.Circle;
//將文字移到外側
chart1.Series[0]["PieLabelStyle"] = "Outside";
//繪制黑色的連線
chart1.Series[0]["PieLineColor"] = "Black";
chart1.Series[0].Points.DataBindXY(xData, yData);
}
(3)懸停工具提示事件方法如下代碼:
//在具體事件處理函數中給出處理方法
/*用chart的mousemove時間,實時跟蹤鼠標最近的X軸的位置,然后把cursorX設置到那個位置上,
讓用戶知道我是選的那一個X的值,同時用tooltip顯示該X軸上所有的Y值*/
void chart1_GetToolTipText(object sender, ToolTipEventArgs e)
{
//判斷鼠標是否移動到數據標記點,是則顯示提示信息
if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
{
int i = e.HitTestResult.PointIndex;
DataPoint dp = e.HitTestResult.Series.Points[i];
//分別顯示x軸和y軸的數值,其中{1:F3},表示顯示的是float類型,精確到小數點后3位。
string r = string.Format("次數:{0};數值:{1} ", dp.XValue, dp.YValues[0]);
//鼠標相對於窗體左上角的坐標
Point formPoint = this.PointToClient(Control.MousePosition);
int x = formPoint.X;
int y = formPoint.Y;
//顯示提示信息
this.panel1.Visible = true;
this.panel1.Location = new Point(x, y);
this.label3.Text = r;
}
//鼠標離開數據標記點,則隱藏提示信息
else {
this.panel1.Visible = false;
}
}
7.當鼠標移動到不同數據標記點是的提示效果如圖6,7所示:
圖6
圖7