我已经开始在我的实时监控应用程序中使用LightningChart。在我的应用程序中,有许多使用分段布局的y轴(每个分段一个y轴):
mainChart.ViewXY.AxisLayout.YAxesLayout = YAxesLayout.Segmented;我的目标是当你用鼠标点击一个片段时,它会变得比其他片段更大(有点像缩放效果),而其他片段会变小。当您再次单击它时,它将恢复正常。
我知道我可以使用以下命令更改数据段的大小:
mainChart.ViewXY.AxisLayout.Segments[segmentNumber].Height = someValue;这就考虑到了缩放效果。现在的问题是,我如何才能解决实际单击的是哪一段?我知道你可以通过MouseClick -event (e.MousePos)获得鼠标位置,但它似乎只给出了屏幕坐标,所以我不确定它是否有帮助。
我使用的是LightningChart版本8.4.2
发布于 2019-07-02 17:00:24
您是正确的,通过MouseClick事件获取鼠标位置是这里的关键。可以使用CoordToValue() -method将通过e.GetPosition (而不是e.MousePos)获得的屏幕坐标转换为图表轴值。然后,您只需将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;注高度是指相对于其他线段的线段高度。希望这能对你有所帮助。
https://stackoverflow.com/questions/56843130
复制相似问题