C#chart 标注折线上某点的X,Y值
6个通道测量温度,得到如图1所示曲线。纵坐标是温度,横坐标是时间。
需要标注多个关键点,如图2所示。
先是试了:
HitTestResult mytestresult= Chart1.HitTest(e.X,e.Y);
if (mytestresult.ChartElementType == ChartElementType.DataPoint)
{
int i = mytestresult.PointIndex;
mytestresult.Series.Points[i].ToolTip="#VAL";
}
试了好多,加了各种方法都没成功。最后认识到,这个是鼠标滑过时的提示,并不我想要的点击一下,就提示,而且一直存在。
成功的代码
最后经过查找资料,反复琢磨终于成功了,代码如下。
HitTestResult mytestresult= Chart1.HitTest(e.X,e.Y);
if (mytestresult.ChartElementType == ChartElementType.DataPoint)
{
int i = mytestresult.PointIndex;
/*DataPoint dp = mytestresult.Series.Points[i];
Chart1.Text = string.Format("次数:{0};数值:{1:F3} ", dp.XValue, dp.YValues[0]);*/
if (wdbz.Checked)
{
// mytestresult.Series.Points[i].ToolTip="#VAL";
//mytestresult.Series.Points[i].MarkerSize = 5;
mytestresult.Series.Points[i].MarkerStyle = MarkerStyle.Diamond;
mytestresult.Series.Points[i].MarkerColor = Color.Red;
mytestresult.Series.Points[i].MarkerBorderWidth = 3;
mytestresult.Series.Points[i].MarkerSize = 10;
mytestresult.Series.Points[i].Label ="序号:" + Convert.ToString(i) + "\r\n" + "温度:" + "#VAL";
mytestresult.Series.Points[i].IsValueShownAsLabel = true;