一、使用过程
1、下载DynamicDataDisplay.dll文件,并引用到wpf工程中
添加
using Microsoft.Research.DynamicDataDisplay;
using Microsoft.Research.DynamicDataDisplay.DataSources;
2、 前端
<Window x:Class="testdanamic.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d3="http://research.microsoft.com/DynamicDataDisplay/1.0"
Title="MainWindow" Height="350" Width="525">
<Grid>
<d3:ChartPlotter x:Name="plotter" Grid.Row="0" Grid.ColumnSpan="5" Margin="0,91,8,10" Grid.RowSpan="3" Grid.Column="1" >
<d3:ChartPlotter.HorizontalAxis>
<d3:HorizontalAxis/>
</d3:ChartPlotter.HorizontalAxis>
<d3:ChartPlotter.VerticalAxis>
<d3:VerticalAxis/>
</d3:ChartPlotter.VerticalAxis>
<d3:Header x:Name="headerx" Content=" " FontSize="14" HorizontalAlignment="Right" Height="17" Margin="0,0,314,0" RenderTransformOrigin="0.338,1.591" Width="673"/>
<d3:VerticalAxisTitle Content="Intensity" FontSize="14"/>
</d3:ChartPlotter>
</Grid>
</Window>
3、后端简单使用
namespace testdanamic
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
ObservableDataSource<Point> currentDataFrame = new ObservableDataSource<Point>();
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
LineGraph graphAcc_x = new LineGraph();
graphAcc_x = plotter.AddLineGraph(currentDataFrame, Colors.Red, 1, "AD_data"); //注册绘图图线,配置粗细颜色以及显示名称
ShowLine();
}
private void ShowLine()
{
Point point = new Point(0, 0);
for (int i = 1; i <= 512; i++)
{
point.X = i;
point.Y = i + 100;
currentDataFrame.AppendAsync(base.Dispatcher, point);
}
}
}
}
效果:
这种出图的方式是,每连接一个点,画面刷新一次,适合于页面刷新速度要求不高的情况,如果数据量大,页面频繁的刷新,会导致CPU占用率很高,程序卡死。
二、如图所示要通过移动鼠标获取x,y的坐标。
参考:https://blog.csdn.net/jsyhello/article/details/7212993
二、实现方法
1、chartplotter绑定鼠标移动事件
2、后台鼠标移动事件获取坐标位置,并显示
三、实测效果
实测之后发现只有图放大之后,获得的鼠标坐标精确,不放大的情况的误差比较大。