找回密码
 立即注册

QQ登录

只需一步,快速开始

anyczy

注册会员

3

主题

15

帖子

105

积分

注册会员

积分
105
最新发帖
anyczy
注册会员   /  发表于:2020-11-11 22:23  /   查看:8628  /  回复:16
1金币
本帖最后由 anyczy 于 2020-11-11 22:25 编辑
  1. public static void drawingXY(C1.WPF.Chart.C1FlexChart flexChart, List<double> DataX, List<double> DataY)
  2.         {
  3.             flexChart.DataContext = CreateData(DataX, DataY);
  4.             C1.WPF.Chart.Series series1 = new C1.WPF.Chart.Series();
  5.             flexChart.Series.Add(series1);
  6.             flexChart.Series[0].BindingX = "dataX";
  7.             flexChart.Series[0].Binding = "dataY";
  8.             //flexChart.ChartType = C1.Chart.ChartType.Area;
  9.             flexChart.LegendPosition = C1.Chart.Position.Right;
  10.         }
  11.         private static List<DataItem> CreateData(List<double> DataX, List<double> DataY)
  12.         {
  13.             var data = new List<DataItem>();
  14.             //fileOper read = new fileOper();
  15.             //read.read();
  16.             for (int i = 0; i < DataY.Count; i++)
  17.             {
  18.                 data.Add(new DataItem(DataX[i], DataY[i]));
  19.             }
  20.             return data;
  21.         }
复制代码
  1. public class DataItem
  2.     {
  3.         public double dataX { get; set; }
  4.         public double dataY { get; set; }
  5.         public DataItem(double _X, double _Y)
  6.         {
  7.             dataX = _X;
  8.             dataY = _Y;
  9.         }
  10.         

  11.     }
复制代码


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


  5. private void TimerPaint_Tick(object sender, EventArgs e)
  6.         {
  7.             List<double> x = new List<double>();
  8.             List<double> y = new List<double>();
  9.             //if (variable.bopen232)
  10.             {
  11.                
  12.                 for (int i = 0; i < 4096; i++)
  13.                 {
  14.                     x.Add(i);
  15.                     y.Add(variable.paint_wave[i]);
  16.                 }
  17.                 draw.drawingXY(flexChart1, x, y);
  18.             }
  19.             
  20.         }
复制代码
为什么每次线程没两次运行时间都是差将近400ms而不是100ms左右,是哪里占用了时间

最佳答案

查看完整内容

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

16 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-11 22:23:14
来自 2#
问题已经收到,我明天验证后给你回复

评分

参与人数 1满意度 +5 收起 理由
anyczy + 5 很给力!

查看全部评分

回复 使用道具 举报
anyczy
注册会员   /  发表于:2020-11-12 10:35:20
3#
Richard.Ma 发表于 2020-11-12 00:21
问题已经收到,我明天验证后给你回复

好的--------------
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-12 12:10:25
4#
你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决

  1. RenderMode="Direct2D"
复制代码

评分

参与人数 1满意度 +5 收起 理由
anyczy + 5 很给力!

查看全部评分

回复 使用道具 举报
anyczy
注册会员   /  发表于:2020-11-12 18:34:00
5#
Richard.Ma 发表于 2020-11-12 12:10
你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决

感谢回复,确实比之前优化了很多,但线程时间还是有一点点影响
回复 使用道具 举报
anyczy
注册会员   /  发表于:2020-11-12 20:08:02
6#
Richard.Ma 发表于 2020-11-12 12:10
你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决

我加上了这句代码后产生了新的bug
我把flex chart放在了tabcontrol里,当我加上这句代码后,我在tabcontrol里切换到其他界面再切换回来后,用滚轮缩放时就发生了bug
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-13 09:42:27
7#
是出现了什么bug呢,请详细描述一下,我看看能否重现

评分

参与人数 1满意度 +5 收起 理由
anyczy + 5 很给力!

查看全部评分

回复 使用道具 举报
anyczy
注册会员   /  发表于:2020-11-13 10:45:48
8#
正常时是这样
当从tabcontrol切换到其他item再切换回来后,用滚轮放大,就变成了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
anyczy
注册会员   /  发表于:2020-11-13 10:47:51
9#
这个是操作的录屏,我不知道怎么直接放视频上来,就打成了压缩包

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-11-13 10:48:59
10#
看起来是叠了两层,这个不排除是多线程导致的,你可以将项目上传上来,我验证一下原因

评分

参与人数 1满意度 +5 收起 理由
anyczy + 5 很给力!

查看全部评分

回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部