高性能图表控件LightningChart图例和注释工具提示问题解答

本文主要介绍了高性能图表控件LightningChart图例和注释工具提示问题解答。

LightningChart.NET完全由GPU加速,并且性能经过优化,可用于实时显示海量数据-超过10亿个数据点。 LightningChart包括广泛的2D,高级3D,Polar,Smith,3D饼/甜甜圈,地理地图和GIS图表以及适用于科学,工程,医学,航空,贸易,能源和其他领域的体绘制功能。

LightningChart.NET现已加入在线订购,SignalTools , 12 months, WPF版本原价4105元,现价只需3499元,现在抢购立享优惠!立即购买>>

LightningChart.NET最新试用版

问题:当用户将鼠标悬停在图表上的图例或注释时,我必须向其显示工具提示,但是我不知道是否可以这样做/span>
我试图处理[sampleDataSeries]的MouseOverOn / Off事件。标题对象,但看起来不起作用。

回复
将鼠标悬停在图表对象上时,绝对有可能显示工具提示。这几乎适用于所有图表对象,例如所有系列类型,轴,注释等。通常使用注释来显示工具提示,但在某些情况下,LegendBox也可以派上用场(跟踪多个系列,具有不同字体的文本和颜色)。

MouseOverOn / Off事件最有可能在这里最有用。实施工具提示的基本方法是具有一个“可见性”被修改的注释。在MouseOverOn -event中启用“可见”,并可能更新“注释”文本,在MouseOverOff中,禁用“可见”。相同的方法适用于所有图表对象,只需注意必须为该对象启用MouseInteraction(在本例中为SampleDataSeries)。这是一个小例子:

_chart.BeginUpdate();            _chart.ViewXY.LegendBoxes[0].Visible = false;            Random rnd = new Random();            SampleDataSeries sds = new SampleDataSeries(_chart.ViewXY, _chart.ViewXY.XAxes[0], _chart.ViewXY.YAxes[0]);            sds.LineStyle.Color = Colors.Red;            sds.SampleFormat = SampleFormat.DoubleFloat;            sds.SamplingFrequency = 1;            sds.FirstSampleTimeStamp = 0;            double[] values = new double[11];            for (int i = 0; i < 11; i++)            {                values[i] = rnd.NextDouble() * 6 + 2;            }            sds.AddSamples(values, false);            sds.MouseOverOn += Sds_MouseOverOn;            sds.MouseOverOff += Sds_MouseOverOff;            _chart.ViewXY.SampleDataSeries.Add(sds);            SampleDataSeries sds2 = new SampleDataSeries(_chart.ViewXY, _chart.ViewXY.XAxes[0], _chart.ViewXY.YAxes[0]);            sds2.LineStyle.Color = Colors.Lime;            sds2.SampleFormat = SampleFormat.DoubleFloat;            sds2.SamplingFrequency = 1;            sds2.FirstSampleTimeStamp = 0;            double[] values2 = new double[11];            for (int j = 0; j < 11; j++)            {                values2[j] = rnd.NextDouble() * 6 + 2;            }            sds2.AddSamples(values2, false);            sds2.MouseOverOn += Sds_MouseOverOn;            sds2.MouseOverOff += Sds_MouseOverOff;            _chart.ViewXY.SampleDataSeries.Add(sds2);            AnnotationXY tooltip = new AnnotationXY(_chart.ViewXY, _chart.ViewXY.XAxes[0], _chart.ViewXY.YAxes[0]);            tooltip.Visible = false;            tooltip.LocationCoordinateSystem = CoordinateSystem.ScreenCoordinates;            tooltip.MouseInteraction = false;            tooltip.Text = "";            tooltip.Style = AnnotationStyle.Rectangle;            _chart.ViewXY.Annotations.Add(tooltip);            _chart.EndUpdate();         private void Sds_MouseOverOff(object sender, MouseEventArgs e)        {            _chart.ViewXY.Annotations[0].Visible = false;        }private void Sds_MouseOverOn(object sender, MouseEventArgs e)        {            _chart.BeginUpdate();            _chart.ViewXY.Annotations[0].Visible = true;            _chart.ViewXY.Annotations[0].LocationScreenCoords.SetValues((float)e.GetPosition(_chart).X, (float)e.GetPosition(_chart).Y);            // Show the current axis values in the annotation            double xVal = 0, yVal = 0;            _chart.ViewXY.XAxes[0].CoordToValue((int)e.GetPosition(_chart).X, out xVal, true);            _chart.ViewXY.YAxes[0].CoordToValue((int)e.GetPosition(_chart).Y, out yVal, true);            _chart.ViewXY.Annotations[0].Text = "X: " + xVal.ToString("0.00") + "nY: " + yVal.ToString("0.00");            _chart.EndUpdate();        }

另一个问题

如何使用鼠标坐标来确定图例框中当前时间所徘徊的标题是什么/span>

回复:当将鼠标移到LegendBox中的系列标题上时,我们实际上有单独的事件要使用。LegendBox的SeriesTitleMouseMoveOverOn / Off事件还提供有关鼠标当前位于的系列的信息。

_chart.ViewXY.LegendBoxes[0].SeriesTitleMouseMoveOverOn += Example_SeriesTitleMouseMoveOverOn;_chart.ViewXY.LegendBoxes[0].SeriesTitleMouseMoveOverOff += Example_SeriesTitleMouseMoveOverOff;private void Example_SeriesTitleMouseMoveOverOff(object sender, SeriesTitleMouseMovedEventArgs e){    (e.Series as SampleDataSeries).LineStyle.Color = Colors.Red;}private void Example_SeriesTitleMouseMoveOverOn(object sender, SeriesTitleMouseMovedEventArgs e){    (e.Series as SampleDataSeries).LineStyle.Color = Colors.Green;}

在上面的示例中,尽管e.Series不会自动检测序列类型,但它会获取当前序列。当然,如果需要,您当然也可以在这些事件中更新“注释”工具提示。

如果需要在这些事件中获取鼠标坐标,则可以使用:
Point mousePos = Mouse.GetPosition(_chart); (在WPF中)
Point mousePos = PointToClient(MousePosition); (在WinForms中)

这为您提供了鼠标在屏幕坐标中的位置。

如果对此有任何疑问,联系客服以获取更多信息。

想要购买LightningChart正版授权,或了解更多产品信息请点击【咨询在线客服】

高性能图表控件LightningChart图例和注释工具提示问题解答

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月1日
下一篇 2021年1月1日

相关推荐

发表回复

登录后才能评论