写点什么

Arction 高性能图表控件 LightningChart 如何标记 + Mouse_Up 事件

用户头像
Geek_bacee5
关注
发布于: 2021 年 04 月 15 日
Arction高性能图表控件LightningChart如何标记+ Mouse_Up事件

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

 

问:我正在使用 ChartEventMarker。我将事件附加到它上,例如“ PositionChanged,MouseClick”。两者都可以。但是,根本不会触发 MouseUp 事件。我应该什么时候触发该事件?为什么不触发?

private void CreateChart()

{

//禁用渲染,强烈建议在更新图表属性之前。

Chart.BeginUpdate();

 

Chart.Name =“ PointLineSeries 图表”;

 

//配置 x 轴。

AxisX axisX = Chart.ViewXY.XAxes [0];

axisX.SetRange(0,20);

 

//配置 y 轴。

Chart.ViewXY.YAxes [0] .SetRange(0,100);

 

PointShapeStyle 符号=新的 PointShapeStyle(

null,

Shape.Rectangle,

Color.Black,

Color.FromArgb(0,Color.Black),

Color.White,

Color.FromArgb(160,Color.Black),

3,

Chart.ViewXY.GetGraphSegmentInfo()。GraphHeight-30,

0,

0,

1,

GradientFillPoint.Solid,

Direction.None,

NULL);

//在图表

ChartEventMarker 上的标记 chartMarker = new ChartEventMarker

{

XValue = 2,

Visible = true

};

chartMarker.Label.Text =“标记”;

chartMarker.Label.Color = Color.Black;

chartMarker.Label.VerticalAlign = AlignmentVertical.Top;

chartMarker.BindToXAxis = true;

chartMarker.Symbol =符号;

chartMarker.Tag = 0;

chartMarker.MouseInteraction = true;

Chart.ViewXY.ChartEventMarkers.Add(chartMarker);

chartMarker.MouseUp + = ChartMarker_MouseUp;

chartMarker.PositionChanged + = ChartMarker_PositionChanged;

 

Chart.EndUpdate();

}

 

回复:我们使用 ChartEventMarkers 测试了事件,但无法重现此问题。至少 PositionChanged,MouseClick,MouseDown 和 MouseUp-事件正常运行。MouseUp -event 会在释放鼠标按钮时触发。然后,它检查鼠标是否在组件上方(在本例中为标记)。因此,它可能不会触发的一个原因是鼠标不在标记上方。这很容易检查 MoveByMouse -property 是否设置为 false:在标记上方按下鼠标按钮,将鼠标移开,然后释放按钮。无需移开鼠标即可执行相同的操作。

这是一个示例代码,它使用正常的 MouseUp -event 添加了一个标记:

ChartEventMarker marker = new ChartEventMarker();

marker.MouseDown += Marker_MouseDown;

marker.MouseUp += Marker_MouseUp;

_chart.ViewXY.ChartEventMarkers.Add(marker);

 

private void Marker_MouseUp(object sender, MouseEventArgs e)

        {

            _chart.Title.Text = "Mouse up";

        }

 

private void Marker_MouseDown(object sender, MouseEventArgs e)

        {

            _chart.Title.Text = "Mouse down";

        }

 

如果您无法触发 MouseUp -event,则可以向我们发布代码的一部分,在其中定义标记及其事件,然后我们可以尝试找出导致此问题的原因。

 

:但是“ MouseUp”事件仍未触发。我使用的版本是 8.2.1.4001(Arction.WinForms.Charting.LightningChartUltimate)

(我在下面的代码行中创建了一个示例项目。)我的代码:

ChartEventMarker marker = new ChartEventMarker();

marker.MouseDown + = Marker_MouseDown;

marker.MouseUp + = ChartMarker_MouseUp;

marker.PositionChanged + = ChartMarker_PositionChanged;

Chart.ViewXY.ChartEventMarkers.Add(marker);

 

private void ChartMarker_PositionChanged(对象发送者,PositionChangedChartEventMarkerEventArgs e)

{

Chart.Title.Text =“位置已更改”;

}

 

private void Marker_MouseDown(object sender,MouseEventArgs e)

{

Chart.Title.Text =“鼠标向下”;

}

 

private void ChartMarker_MouseUp(object sender,MouseEventArgs e)

{

Chart.Title.Text =“鼠标向上”;

}

 

永远不会出现在“ ChartMarker_MouseUp”上。您使用的是同一版本吗?

 

回复:我再次检查了一下,发现您的代码中没有任何错误,是 LightningChart 版本导致了此错误。在某些 8.2 版本中,MouseUp -event 被某些组件(例如注释和事件标记)所困扰。此问题在更高版本的 LightningChart 中已修复,这解释了为什么它在我的测试中有效。

因此,我看到使事件在您的应用程序中起作用的两个可能选项:1.将 LightningChart 更新为最新版本。2.如果以上都不是选项,则必须使用解决方法。一种方法是将 MouseUp -event 用于图表组件,这似乎可以正常工作。只要图表具有焦点,只要释放鼠标按钮,它就会触发。例如,您可以使用布尔变量使它与标记的 MouseDown -event 一起使用。这是一个例子:

private bool markerClicked = false;

 

ChartEventMarker marker = new ChartEventMarker();

marker.MouseDown += Marker_MouseDown;

_chart.ViewXY.ChartEventMarkers.Add(marker);

 

_chart.MouseUp += _chart_MouseUp;

private void Marker_MouseDown(object sender, MouseEventArgs e)

        {

            markerClicked = true;

        }

private void _chart_MouseUp(object sender, MouseEventArgs e)

        {

            if (markerClicked)

            {

                markerClicked = false;

                // Something happens

            }

        }

 

在此示例中,仅当首先单击标记时,才会执行 MouseUp -event 中发生的任何事情。需要注意的一件事是,在这种情况下,释放按钮时鼠标光标可以位于任何位置(不必位于标记上方)。

 

关于 LightningChart

LightningChart是一家坐落于北欧芬兰的控件开发商Arction Ltd 的产品,是微软公司认证的合作伙伴。高性能图标控件 LightningChart 高效渲染效率很受.NET 开发者青睐。Arction 在重塑图表控件领域中做出极大成绩: 2009 年,Arction 成为业界第一家 WinForms图表控件领域中引入 DirectX 2D 渲染的制造商; 2013 年,以第一家针对 WPF 制图行业中使用 DirectX 引入真正硬件加速的制造商而闻名;近年来,Arction专注于开发最高性能和最先进的数据可视化工具,设定行业最高标准。

用户头像

Geek_bacee5

关注

还未添加个人签名 2021.04.15 加入

还未添加个人简介

评论

发布
暂无评论
Arction高性能图表控件LightningChart如何标记+ Mouse_Up事件