[C#] ToolTips on MS Chart

目的:

顯示圖表特定位置的X與Y值。

  • 顯示圖點之XY值
/// <summary>
/// Chart Event: GetToolTipText,於ToolTips顯示圖點的XY值
/// 參考: http://www.blueshop.com.tw/board/FUM20050124191756KKC/BRD20110829075354ZPT.html
/// </summary>
private void chart_GetToolTipText(object sender, ToolTipEventArgs e)
{
    if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint)
    {
        DataPoint myPoint = (DataPoint)(e.HitTestResult.Object);
        e.Text = "X value: " + myPoint.XValue + Environment.NewLine;
        e.Text += "Y value: " + myPoint.YValues[0] + Environment.NewLine;
    }
}

  • 顯示滑鼠位置之XY值
/// <summary>
/// Chart ToolTips顯示滑鼠位置之XY值
/// 參考: http://stackoverflow.com/questions/9647666/finding-the-value-of-the-points-in-a-chart
/// </summary>
Point? prevPosition = null;
ToolTip tooltip = new ToolTip();
private void chart_MouseMove(object sender, MouseEventArgs e)
{
    var pos = e.Location;
    if (chart.Series.Count == 0 || (prevPosition.HasValue && pos == prevPosition.Value)  )
        return;
    tooltip.RemoveAll();
    prevPosition = pos;
    var results = chart.HitTest(pos.X, pos.Y, false, ChartElementType.PlottingArea);
    

foreach (var result in results)
    {
        if (result.ChartElementType == ChartElementType.PlottingArea)
        {
            var xVal = result.ChartArea.AxisX.PixelPositionToValue(pos.X);
            var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y);

            tooltip.Show("X=" + xVal + ", Y=" + yVal, chart,
                            pos.X, pos.Y - 15);
        }
    }
}

 

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s