首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决LightningChart中y轴线段被点击的问题

如何解决LightningChart中y轴线段被点击的问题
EN

Stack Overflow用户
提问于 2019-07-02 06:18:34
回答 1查看 124关注 0票数 0

我已经开始在我的实时监控应用程序中使用LightningChart。在我的应用程序中,有许多使用分段布局的y轴(每个分段一个y轴):

代码语言:javascript
复制
mainChart.ViewXY.AxisLayout.YAxesLayout = YAxesLayout.Segmented;

我的目标是当你用鼠标点击一个片段时,它会变得比其他片段更大(有点像缩放效果),而其他片段会变小。当您再次单击它时,它将恢复正常。

我知道我可以使用以下命令更改数据段的大小:

代码语言:javascript
复制
mainChart.ViewXY.AxisLayout.Segments[segmentNumber].Height = someValue;

这就考虑到了缩放效果。现在的问题是,我如何才能解决实际单击的是哪一段?我知道你可以通过MouseClick -event (e.MousePos)获得鼠标位置,但它似乎只给出了屏幕坐标,所以我不确定它是否有帮助。

我使用的是LightningChart版本8.4.2

EN

回答 1

Stack Overflow用户

发布于 2019-07-02 17:00:24

您是正确的,通过MouseClick事件获取鼠标位置是这里的关键。可以使用CoordToValue() -method将通过e.GetPosition (而不是e.MousePos)获得的屏幕坐标转换为图表轴值。然后,您只需将y坐标与每个y轴的最小值/最大值进行比较,即可找出单击了哪个线段。下面是一个示例:

代码语言:javascript
复制
_chart.MouseClick += _chart_MouseClick;

private void _chart_MouseClick(object sender, MouseButtonEventArgs e)
{            
    var mousePos = e.GetPosition(_chart).Y;
    double axisPos = 0;
    bool isWithinYRange = false;
    foreach (AxisY ay in _chart.ViewXY.YAxes)
    {
        ay.CoordToValue((float)mousePos, out axisPos, true);
        if (axisPos >= ay.Minimum && axisPos <= ay.Maximum)
        {
            // Segment clicked, get the index via ay.SegmentIndex;
            isWithinYRange = true;
        }
    }
    if (!isWithinYRange)
    {
        // Not in any segment
    }
}

找到线束段索引后,您可以按所述修改其高度:

代码语言:javascript
复制
_chart.ViewXY.AxisLayout.Segments[0].Height = 1.5;

注高度是指相对于其他线段的线段高度。希望这能对你有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56843130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档