zoukankan      html  css  js  c++  java
  • 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("
    ");
                    }
    
                    savesw.Flush();
                    savesw.Close();
                    savefs.Close();
                    Title = filename;//显示全路径
                }
            }
    按键处理事件

    保存如下:

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

  • 相关阅读:
    JS中every()和some()的用法
    Git 各指令的本质
    vue登录3D效果
    vue打包后反编译到源代码(reverse-sourcemap)
    CSS Modules
    有了 HTTP 协议,为什么还需要 Websocket?
    微信小程序的实现原理
    JS
    微信小程序的发布流程
    中国地图
  • 原文地址:https://www.cnblogs.com/lizhiqiang0204/p/14113940.html
Copyright © 2011-2022 走看看