2017-09-28 2 views
0

캔버스가 있습니다 (InkCanvas가 아님)! 드로잉은 PointerMoved 이벤트에 의해 수행되므로 포인터가 움직일 때마다 포인터의 현재 위치를 가져 와서 폴리 라인 포인트 콜렉션에 추가합니다. 여태까지는 그런대로 잘됐다. 그러나 포인터를 아주 작은 거리만큼 움직일 때마다 그려지는 선은 다음과 같이 실제로 이상합니다. C# UWP Canvas Polyline 이상한 결과 그리기

enter image description here

을 (마지막 수평선 내가 자동으로 다각형에 폴리 라인을 닫습니다 그것 때문에, 버그의 일부가 아닌)이 냈다 내 코드입니다 :

private void AddPointToPolyline(Polyline pl, object sender, PointerRoutedEventArgs e) 
    { 
     if (e.Pointer.PointerDeviceType != PointerDeviceType.Touch) 
     { 
      PointerPoint pt = GetCurrentPointerPosition(sender, e); 
      if (pl != null && pt != null && pl.Points.Count > 0 && pl.Points.Any()) 
      { 
       pl.Points.Add(pt.RawPosition); 
      } 
     } 
    } 

처럼 위에서 말했듯이,이 메소드는 포인터가 움직일 때마다 호출됩니다.

두 점이 너무 가까우면 폴리 라인에 배치하는 대신 새 점을 버리는 방법을 구현하려고했습니다. 그러나 그 후에 버그는 여전히 발생했고 더 이상 부드럽 지 않아 드로잉이 더 이상 느껴지지 않았습니다.

새로운 기술로 변경하지 않고이 버그를 해결할 수있는 방법이 있습니까? (InkCanvas를 사용하고 싶지 않습니다)?

+1

설정'StrokeLineJoin' 이외의 값으로 StrokiLineJoint는 '. – Clemens

+0

StrokeLineJoin을 베벨로 변경하고 모든 문제를 즉시 해결했습니다. 대단히 감사합니다. – eXodiquas

+2

라운드가 부드럽게 보일 수도 있습니다 :-) – Clemens

답변

1

처럼 클레멘스는 주석에서 언급 :

(기본값)`마이 이외의 값 (기본값) 마이

+0

'line.StrokeLineJoin = PenLineJoin.Round;' – mikesl