anyczy 发表于 2020-11-11 22:23:13

WPF flexchart求助帖

本帖最后由 anyczy 于 2020-11-11 22:25 编辑

public static void drawingXY(C1.WPF.Chart.C1FlexChart flexChart, List<double> DataX, List<double> DataY)
      {
            flexChart.DataContext = CreateData(DataX, DataY);
            C1.WPF.Chart.Series series1 = new C1.WPF.Chart.Series();
            flexChart.Series.Add(series1);
            flexChart.Series.BindingX = "dataX";
            flexChart.Series.Binding = "dataY";
            //flexChart.ChartType = C1.Chart.ChartType.Area;
            flexChart.LegendPosition = C1.Chart.Position.Right;
      }
      private static List<DataItem> CreateData(List<double> DataX, List<double> DataY)
      {
            var data = new List<DataItem>();
            //fileOper read = new fileOper();
            //read.read();
            for (int i = 0; i < DataY.Count; i++)
            {
                data.Add(new DataItem(DataX, DataY));
            }
            return data;
      }public class DataItem
    {
      public double dataX { get; set; }
      public double dataY { get; set; }
      public DataItem(double _X, double _Y)
      {
            dataX = _X;
            dataY = _Y;
      }
      

    }

上面是我flex chart画图Draw类的函数
下面是我的线程部分
DispatcherTimer Timer_paint = new DispatcherTimer(DispatcherPriority.Normal, this.Dispatcher);
            Timer_paint.Interval = new TimeSpan(0, 0, 0, 0, 100);
            Timer_paint.Tick += TimerPaint_Tick;
            Timer_paint.Start();


private void TimerPaint_Tick(object sender, EventArgs e)
      {
            List<double> x = new List<double>();
            List<double> y = new List<double>();
            //if (variable.bopen232)
            {
               
                for (int i = 0; i < 4096; i++)
                {
                  x.Add(i);
                  y.Add(variable.paint_wave);
                }
                draw.drawingXY(flexChart1, x, y);
            }
            
      }为什么每次线程没两次运行时间都是差将近400ms而不是100ms左右,是哪里占用了时间

Richard.Ma 发表于 2020-11-11 22:23:14

问题已经收到,我明天验证后给你回复

anyczy 发表于 2020-11-12 10:35:20

Richard.Ma 发表于 2020-11-12 00:21
问题已经收到,我明天验证后给你回复

好的--------------

Richard.Ma 发表于 2020-11-12 12:10:25

你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决

RenderMode="Direct2D"

anyczy 发表于 2020-11-12 18:34:00

Richard.Ma 发表于 2020-11-12 12:10
你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决

感谢回复,确实比之前优化了很多,但线程时间还是有一点点影响

anyczy 发表于 2020-11-12 20:08:02

Richard.Ma 发表于 2020-11-12 12:10
你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决

我加上了这句代码后产生了新的bug
我把flex chart放在了tabcontrol里,当我加上这句代码后,我在tabcontrol里切换到其他界面再切换回来后,用滚轮缩放时就发生了bug

Richard.Ma 发表于 2020-11-13 09:42:27

是出现了什么bug呢,请详细描述一下,我看看能否重现

anyczy 发表于 2020-11-13 10:45:48

正常时是这样
当从tabcontrol切换到其他item再切换回来后,用滚轮放大,就变成了

anyczy 发表于 2020-11-13 10:47:51

这个是操作的录屏,我不知道怎么直接放视频上来,就打成了压缩包

Richard.Ma 发表于 2020-11-13 10:48:59

看起来是叠了两层,这个不排除是多线程导致的,你可以将项目上传上来,我验证一下原因
页: [1] 2
查看完整版本: WPF flexchart求助帖