c# - 动态数据显示/获取用户输入的 x 坐标

标签 c# wpf dynamic-data-display

我的程序基本上是关于分析视频。 主要部分是绘制一个图表,在 y 轴上显示(例如)每帧的亮度,在 x 轴上显示每帧编号。由于该程序是用 C# 编写并使用 WPF,因此 D³ 是绘图的最佳选择。

现在,用户可能会在图中看到峰值信号,并希望查看该单帧以了解为什么它如此明亮(这可能只是自然现象,或者是编码伪影)。

我的问题是:用户单击峰值所在的图表的最直观方法是将视频预览(其他 GUI 元素)直接跳转到该帧。所以我需要用户点击图表的 x 坐标(=帧编号)。

可以手动分析鼠标输入事件,但这需要大量工作(因为每个视频的 x 轴都不同,并且整个图表可以调整大小,因此绝对坐标是不行的)。 但也许 D³ 已经实现了类似的功能。我搜索了纪录片,但没有找到任何有用的东西。唯一的信息是使用“DraggablePoint”,但这就是线索变冷的地方。 你们有人知道如何轻松获取 x 坐标吗?

最佳答案

这绝对是可能的!我过去完成此操作的方法是将 CursorCoordinateGraph 对象添加到我的绘图仪子项中,它会自动跟踪图表上与数据相关的鼠标位置。您可以关闭 CursorCooperativeGraph 的视觉功能并将其仅用于跟踪。它看起来像这样:

CursorCoordinateGraph mouseTrack;
plotter.Children.Add(mouseTrack);
mouseTrack.ShowHorizontalLine = false;
mouseTrack.ShowVerticalLine = false;

您的鼠标单击事件将如下所示:

private void plotter_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{
    Point mousePos = mouseTrack.Position;
    var transform = plotter.Viewport.Transform;
    Point mousePosInData = mousePos.ScreenToData(transform);
    double xValue = mousePosInData.X;
}

然后,您可以使用 xValue 并按照您希望的方式操作它,以达到您想要的效果。

关于c# - 动态数据显示/获取用户输入的 x 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13901131/

相关文章:

c# - 在 Windows 应用商店应用程序中打印没有打印预览的文档

c# - 有没有办法通过另一个类访问列表元素属性

c# - 数据库架构已更改

c# - WPF D3 动态数据显示多轴

c# - 动态数据展示(D3)——生成多图

c# - WPF 中的 Aero 窗口 (C#)

c# - 获取应用程序路径

c# - MVVM:将 ContentControl 绑定(bind)到 CheckBox

c# - 在 Rect 对象上创建 WPF 工具提示

c# - 仅显示来自实体对象的 DataGrid 中的某些列