wpf 使用devexpress画时间折线图

效果如下:

 

 

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts" x:Class="WpfApp2.MainWindow"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" >
    <Grid>
        <dxc:ChartControl Name="chart2" BorderThickness="2" HorizontalAlignment="Left" >
            <dxc:XYDiagram2D EnableAxisXNavigation="True" >
                <dxc:XYDiagram2D.AxisX>
                    <dxc:AxisX2D
                        StickToEnd="True"><!--自动滚到最右边-->
                        <dxc:AxisX2D.WholeRange>
                            <dxc:Range
                                x:Name="xyRange"
                                SideMarginsValue="1" /> <!--距离最右边的长度-->
                        </dxc:AxisX2D.WholeRange>
                    </dxc:AxisX2D>
                </dxc:XYDiagram2D.AxisX>

                <dxc:XYDiagram2D.AxisY>
                    <dxc:AxisY2D Interlaced="True" >
                        <dxc:AxisY2D.Title>
                            <dxc:AxisTitle Content="Y轴单位" />
                        </dxc:AxisY2D.Title>
                    </dxc:AxisY2D>
                </dxc:XYDiagram2D.AxisY>
                <dxc:LineSeries2D Name="series1" ArgumentScaleType="Qualitative" DisplayName="series1">
                    <dxc:LineSeries2D.LineStyle>
                        <dxc:LineStyle Thickness="2" />
                    </dxc:LineSeries2D.LineStyle>
                </dxc:LineSeries2D>
            </dxc:XYDiagram2D>
            <!-- 图例-->
            <dxc:ChartControl.Legend>
                <dxc:Legend Visibility="Hidden" />
            </dxc:ChartControl.Legend>
        </dxc:ChartControl>
    </Grid>
</Window>
MainWindow.xaml
using DevExpress.Xpf.Charts;
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;

namespace WpfApp2
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        
        public MainWindow()
        {
            InitializeComponent();

            var task = Task.Run(() =>
            {
                double x = 0;
                int start = Environment.TickCount;
                while (true)
                {
                    int time = Math.Abs(Environment.TickCount - start);
                    if (time >= 1000 )//1秒记录一个点
                    {
                        start = Environment.TickCount;
                        this.Dispatcher.Invoke(new Action(() =>
                        {
                            x = x + 0.1;
                            //series1.Points.Add(new SeriesPoint(DateTime.Now.ToString("hh:mm:ss fff"), Math.Sin(x) * 100 + 100));//X轴 时分秒毫秒
                            series1.Points.Add(new SeriesPoint(DateTime.Now.ToString("hh:mm:ss"), Math.Sin(x) * 100 + 100));//X轴 时分秒
                        }));
                    }
                    Thread.Sleep(1);
                }
            });
        }
    }
}
MainWindow.xaml.cs

 如果想保存数据点可以增加个按键

<Button Grid.Column="1" Content="记录数据" Height="30" VerticalAlignment="Top" Click="Button_Click" />
 private void Button_Click(object sender, RoutedEventArgs e)
        {
            // Configure save file dialog
            var dlg = new SaveFileDialog
            {
                FileName = "",
                DefaultExt = ".csv",
                Filter = "CSV Files|*.csv|TSV Files|*.tsv|Text Files|*.txt|All Files|*.*"
            };
            // Default file name
            // Default file extension
            // Filter files by extension

            // Show save file dialog
            var result = dlg.ShowDialog();

            // Process save file dialog results
            if (result == true)
            {
                // Save document
                var filename = dlg.FileName;

                FileStream savefs = new FileStream(dlg.FileName, FileMode.Create);
                StreamWriter savesw = new StreamWriter(savefs);
                for (int i = 0; i < series1.Points.Count; i++)
                {
                    savesw.Write(series1.Points[i].Argument + ",");
                    savesw.Write(series1.Points[i].Value.ToString("0.00") + ",");
                    savesw.Write("\r\n");
                }

                savesw.Flush();
                savesw.Close();
                savefs.Close();
                Title = filename;//显示全路径
            }
        }
按键处理事件

保存如下:

 源码下载地址:https://github.com/lizhiqiang0204/WPF-use-devexpress-to-charts

posted @ 2020-12-10 14:33  阿坦  阅读(722)  评论(0编辑  收藏  举报