2016-11-21 25 views
-2

我有绘制曲线动画的简单动画。 每OnDraw中我使用:UWP CanvasControl重绘

lines.add(...); 
for(int i = 1; i < lines.Count; i++) 
    ds.DrawLine(lines[i - 1], lines[i], Colors.Green, 2);` 

的行数超过10000 如何优化呢?

+0

只是一个小提示:使用'i-1'作为访问'lines'集合的索引会导致下溢,因为你的循环以'i = 0'开始,这意味着第一次循环迭代将会尝试访问通常不存在的行[-1]。 – Striezel

+0

我的循环启动索引= 1,对不起,这个例子,但如何优化? 好的另一个问题,如何在画布上绘制而不重绘每秒60画? –

回答

1

如果每次只在前一行保持不变时添加行,请考虑缓存先前的绘制结果。将所有行直接绘制到CanvasControl,而不是将其绘制到CanvasRenderTarget中,然后将该rendertarget绘制到CanvasControl上。现在,您只需要每次将任何新线添加到rendertarget,将它们绘制在所有先前绘制的重用线的顶部。