You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ScottPlot 5如何获取鼠标位置?VB.NET开发者技术咨询

ScottPlot 5中获取鼠标坐标并展示的实现方案

在ScottPlot 5里,替代v4版本MouseMove事件+GetMouseCoordinates()的方案如下:

核心实现逻辑

ScottPlot 5将鼠标坐标获取整合到了事件参数处理中,通过Plot.GetCoordinates()方法接收屏幕坐标,直接转换为图表的实际数据坐标。

VB.NET 代码示例

基础版:实时显示坐标到控件(如Label)

假设你已经在WinForms窗体中添加了FormsPlot控件(命名为formsPlot1)和一个Label(命名为lblCoordinates):

Private Sub formsPlot1_MouseMove(sender As Object, e As MouseEventArgs) Handles formsPlot1.MouseMove
    ' 将屏幕坐标转换为图表数据坐标
    Dim dataCoords As Coordinates = formsPlot1.Plot.GetCoordinates(e.Location)
    
    ' 更新Label显示坐标,保留两位小数
    lblCoordinates.Text = $"当前坐标:X = {dataCoords.X:F2}, Y = {dataCoords.Y:F2}"
End Sub

进阶版:带十字线的坐标提示

如果需要更直观的交互(鼠标跟随十字线+坐标标签),可以结合Crosshair工具:

' 先初始化十字线控件
Private crosshair As Crosshair = formsPlot1.Plot.Add.Crosshair(0, 0)

Private Sub formsPlot1_MouseMove(sender As Object, e As MouseEventArgs) Handles formsPlot1.MouseMove
    Dim dataCoords As Coordinates = formsPlot1.Plot.GetCoordinates(e.Location)
    
    ' 更新十字线位置并显示
    crosshair.X = dataCoords.X
    crosshair.Y = dataCoords.Y
    crosshair.IsVisible = True
    
    ' 同时更新坐标标签
    lblCoordinates.Text = $"X: {dataCoords.X:F2}, Y: {dataCoords.Y:F2}"
    
    ' 刷新图表生效
    formsPlot1.Refresh()
End Sub

' 鼠标离开图表时隐藏十字线
Private Sub formsPlot1_MouseLeave(sender As Object, e As EventArgs) Handles formsPlot1.MouseLeave
    crosshair.IsVisible = False
    formsPlot1.Refresh()
End Sub

关键说明

  • Coordinates类型是ScottPlot 5中表示数据坐标的核心类,直接包含X和Y属性对应图表的实际数值。
  • GetCoordinates()方法会自动处理图表的缩放、平移等状态,返回的坐标始终是当前视图下的实际数据值。

内容的提问来源于stack exchange,提问作者Angelo Rubens Migliore Junior

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:15:04