当鼠标悬浮在图表上的某个系列点上时显示相对应的提示信息
#region 指针移动或离开时发生
ToolTipController toolTipController = new ToolTipController();
/// <summary>
/// 鼠标移过组件时发生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void chartControl1_MouseMove(object sender, MouseEventArgs e)
{
ChartHitInfo hitInfo = chartControl1.CalcHitInfo(e.Location);
StringBuilder builder = new StringBuilder();
if (hitInfo.InDiagram)
builder.AppendLine("在图");
if (hitInfo.InNonDefaultPane)
builder.AppendLine("在非默认的窗格: " + hitInfo.NonDefaultPane.Name);
if (hitInfo.InAxis)
{
builder.AppendLine("中抽线: " + hitInfo.Axis.Name);
if (hitInfo.AxisLabelItem != null)
builder.AppendLine("标签项目: " + hitInfo.AxisLabelItem.Text);
if (hitInfo.AxisTitle != null)
builder.AppendLine("抽标题: " + hitInfo.AxisTitle.Text);
}
if (hitInfo.InChartTitle)
builder.AppendLine("图表标题: " + hitInfo.ChartTitle.Text);
if (hitInfo.InLegend)
builder.AppendLine("In legend");
if (hitInfo.InSeries)
builder.AppendLine("系列: " + ((Series)hitInfo.Series).Name);
if (hitInfo.InSeriesLabel)
{
builder.AppendLine("系列标签");
builder.AppendLine("系列: " + ((Series)hitInfo.Series).Name);
}
if (hitInfo.SeriesPoint != null)
{
builder.AppendLine("Argument: " + hitInfo.SeriesPoint.Argument);
if (!hitInfo.SeriesPoint.IsEmpty)
builder.AppendLine("Value: " + hitInfo.SeriesPoint.Values[0]);
}
if (builder.Length > 0)
toolTipController.ShowHint( builder.ToString(), chartControl1.PointToScreen(e.Location));
else
toolTipController.HideHint();
}
/// <summary>
/// 鼠标离开组件时发生
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void chartControl1_MouseLeave(object sender, EventArgs e)
{
toolTipController.HideHint();
}
#endregion
本文介绍了一种在鼠标悬停于图表上时显示相关信息的技术实现方案。通过使用MouseMove和MouseLeave事件,能够准确捕捉到鼠标位置并显示当前点的数据详情,包括所在系列名称、坐标轴信息等。
7913

被折叠的 条评论
为什么被折叠?



