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

本文讨论了在使用Arction的LightningChart时遇到的MouseUp事件不触发的问题。尽管其他事件如PositionChanged和MouseClick正常工作,但在特定版本的LightningChart中,MouseUp事件可能会遇到问题。解决方案包括更新到最新版本或使用图表的MouseUp事件作为替代方法。LightningChart是一款GPU加速的数据可视化控件,适用于多种领域和大规模数据展示。

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专注于开发最高性能和最先进的数据可视化工具,设定行业最高标准。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值