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

本文主要是介绍高性能图表控件LightningChart图例和注释工具提示问题解答,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

点击下载LightningChart.NET最新试用版

问题:当用户将鼠标悬停在图表上的图例或注释时,我必须向其显示工具提示,但是我不知道是否可以这样做?
我试图处理[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 annotationdouble 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();}

另一个问题:
如何使用鼠标坐标来确定图例框中当前时间所徘徊的标题是什么?

回复:当将鼠标移到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图例和注释工具提示问题解答的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197236

相关文章

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

电脑提示d3dx11_43.dll缺失怎么办? DLL文件丢失的多种修复教程

《电脑提示d3dx11_43.dll缺失怎么办?DLL文件丢失的多种修复教程》在使用电脑玩游戏或运行某些图形处理软件时,有时会遇到系统提示“d3dx11_43.dll缺失”的错误,下面我们就来分享超... 在计算机使用过程中,我们可能会遇到一些错误提示,其中之一就是缺失某个dll文件。其中,d3dx11_4

游戏闪退弹窗提示找不到storm.dll文件怎么办? Stormdll文件损坏修复技巧

《游戏闪退弹窗提示找不到storm.dll文件怎么办?Stormdll文件损坏修复技巧》DLL文件丢失或损坏会导致软件无法正常运行,例如我们在电脑上运行软件或游戏时会得到以下提示:storm.dll... 很多玩家在打开游戏时,突然弹出“找不到storm.dll文件”的提示框,随后游戏直接闪退,这通常是由于

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核