0

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

mainChart.ViewXY.AxisLayout.YAxesLayout = YAxesLayout.Segmented;

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

我知道我可以通过以下方式更改段的大小:

mainChart.ViewXY.AxisLayout.Segments[segmentNumber].Height = someValue;

这负责缩放效果。现在的问题是如何解决实际点击了哪个段?我发现您可以通过 MouseClick -event (e.MousePos) 获得鼠标位置,但这似乎只给出了屏幕坐标,所以我不确定它是否有帮助。

我正在使用 LightningChart 版本 8.4.2

4

1 回答 1

2

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

_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
    }
}

找出段索引后,您可以按照描述修改其高度:

_chart.ViewXY.AxisLayout.Segments[0].Height = 1.5;

注意 高度是指与其他段相比的段高度。希望这会有所帮助。

于 2019-07-02T09:00:24.217 回答