2016-11-21 4 views
-2

커브 애니메이션을 그리는 간단한 애니메이션이 있습니다. 모든으로 OnDraw 내가 사용 :이 최적화 할 수있는 방법UWP CanvasControl Redraw

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'으로 시작하기 때문에 현재와 같이 언더 플로우가 발생합니다. 즉, 첫 번째 루프 반복이 보통 존재하지 않는'lines [-1]'에 접근 해보십시오. – Striezel

+0

내 루프 시작 인덱스 = 1,이 예제로 미안하지만 어떻게 최적화? 또 다른 질문, 다시 그리기없이 캔버스에서 초 당 60 그리는 방법은 무엇입니까? –

답변

1

이전 줄을 변경하지 않고 매번 줄을 추가하는 경우 이전 드로잉 결과를 캐싱하는 것이 좋습니다. 모든 선을 직접 CanvasControl에 그리는 대신 CanvasRenderTarget에 그려서 렌더링 한 다음 렌더링 타겟을 CanvasControl에 그립니다. 이제는 매번 렌더링 타겟에 새로운 라인을 추가하기 만하면 이전에 그려진 모든 재사용 된 라인의 맨 위에 그리게됩니다.