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-12 00:21
问题已经收到,我明天验证后给你回复
好的-------------- 你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决
RenderMode="Direct2D" Richard.Ma 发表于 2020-11-12 12:10
你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决
感谢回复,确实比之前优化了很多,但线程时间还是有一点点影响 Richard.Ma 发表于 2020-11-12 12:10
你这个属于性能问题,将RenderMode属性设置为"Direct2D" ,就可以解决
我加上了这句代码后产生了新的bug
我把flex chart放在了tabcontrol里,当我加上这句代码后,我在tabcontrol里切换到其他界面再切换回来后,用滚轮缩放时就发生了bug 是出现了什么bug呢,请详细描述一下,我看看能否重现 正常时是这样
当从tabcontrol切换到其他item再切换回来后,用滚轮放大,就变成了 这个是操作的录屏,我不知道怎么直接放视频上来,就打成了压缩包 看起来是叠了两层,这个不排除是多线程导致的,你可以将项目上传上来,我验证一下原因
页:
[1]
2