亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何讓 X 軸從 0 開始并每秒更新而不是使用當前時間(DateTime)?

我如何讓 X 軸從 0 開始并每秒更新而不是使用當前時間(DateTime)?

C#
ITMISS 2022-12-31 14:03:35
我正在嘗試創建一個測量系統,可以使用 LiveCharts 測量 Y 軸上的值和 X 軸上的時間。我使用Constant Changes作為基礎來創建我的圖表,但我希望我的 X 軸從 0 秒開始,而不是像示例中那樣從當前時間開始。我已經嘗試過如何使用 Livecharts 使 x 軸從 0 開始并有 2 秒的步長,而不是盯著程序啟動的第二秒?但我無法讓它與我的程序一起工作。我想做他們在上面鏈接的線程中做的同樣的事情,但無法讓它工作。我的輸出/它看起來如何代碼隱藏:        public void init()        {            var mapper = Mappers.Xy<ValueRandomizerForTest>().X(model =>              model.DateTime.Ticks).Y(model => model.Valuefordate);            Charting.For<ValueRandomizerForTest>(mapper);            ChartValues = new ChartValues<ValueRandomizerForTest>();            DateTimeFormatter = value => new                  DateTime((long)value).ToString("ss");            AxisStep = TimeSpan.FromSeconds(1).Ticks;            AxisUnit = TimeSpan.TicksPerSecond;            SetAxisLimits(DateTime.Now);        }public void read()        {            var r = new Random();            while (isreading)            {                Thread.Sleep(550);                var now = DateTime.Now;                var test = now.Second;                _trend = r.Next(1, 100);                if(ChartValues.Count == 0)                {                }                ChartValues.Add(new ValueRandomizerForTest                {                    DateTime = now,                    Valuefordate = _trend                });                SetAxisLimits(now);                //lets only use the last 150 values                if (ChartValues.Count > 150)                {                    ChartValues.RemoveAt(0);                }            }        }        public void SetAxisLimits(DateTime now)        {            AxisMax = now.Ticks + TimeSpan.FromSeconds(1).Ticks; //Axis is moving 1 second ahead            AxisMin = now.Ticks - TimeSpan.FromSeconds(5).Ticks;         }
查看完整描述

1 回答

?
吃雞游戲

TA貢獻1829條經驗 獲得超7個贊

見內聯評論:


    private long startTimeTicks;

    public void init()

    {

        var mapper = Mappers.Xy<ValueRandomizerForTest>().X(model => 

         model.DateTime.Ticks).Y(model => model.Valuefordate);

        Charting.For<ValueRandomizerForTest>(mapper);

        ChartValues = new ChartValues<ValueRandomizerForTest>();

        DateTimeFormatter = value => new 

             DateTime((long)value).ToString("ss");

        AxisStep = TimeSpan.FromSeconds(1).Ticks;


        AxisUnit = TimeSpan.TicksPerSecond;


        var currentTime = DateTime.Now;

        startTimeTicks = currentTime.Ticks; // store start time

        SetAxisLimits(currentTime);

    }


    public void read()

    {

        var r = new Random();


        while (isreading)

        {

            Thread.Sleep(550);

            var now = DateTime.Now;

            var test = now.Second;


            _trend = r.Next(1, 100);


            if(ChartValues.Count == 0)

            {

            }


            ChartValues.Add(new ValueRandomizerForTest

            {

                DateTime = now - new TimeSpan(startTimeTicks),

                Valuefordate = _trend

            });


            SetAxisLimits(now);


            //lets only use the last 150 values

            if (ChartValues.Count > 150)

            {

                ChartValues.RemoveAt(0);

            }

        }

    }


    public void SetAxisLimits(DateTime now)

    {

        long offsetTicks = now.Ticks - startTimeTicks; // compute offset ticks from program start (at call from init() this calculation will be equal to 0)

        AxisMin = Math.Max(offsetTicks - TimeSpan.FromSeconds(5).Ticks, 0);

        AxisMax = AxisMin  + TimeSpan.FromSeconds(6).Ticks; // Set max according to min

    }


查看完整回答
反對 回復 2022-12-31
  • 1 回答
  • 0 關注
  • 106 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號