2017-01-23 1 views

답변

3

SkiaSharp는 삼차 베 지어 곡선을 지원합니다. 따라서 할 수있는 것은 스플라인을 세그먼트로 나누고 (점이 세그먼트 끝점을 결정 함) 입방 형 베 지어 곡선을 사용하여 각 세그먼트를 그립니다. 이렇게하려면 스플라인 곡선의 각 점 사이에 두 개의 제어점을 도입해야합니다. 인접한 세그먼트의 곡선이 부드럽게 연결되도록이 점을 선택해야합니다.

방금 ​​구현했습니다. public static SKPath CreateSpline(params SKPoint[] Points) 메서드는 점 사이의 스플라인을 그리는 데 사용할 수있는 패스를 생성합니다. 현재 구현을 볼 수 있습니다

https://github.com/PeterWaher/IoTGateway/blob/master/Script/Waher.Script.Graphs/Functions/Plots/Plot2DCurve.cs

예 : 답장을

Spline example

+0

안녕 피터, 굉장한 직업. 공유해 주셔서 감사합니다. 감사합니다. –

2

나는 당신이 물어 정확히 잘 모르겠지만,이 개 지역은 부드럽게 거기에 있습니다

안티 앨리어싱이 SKPaint.IsAntialias를 사용하여 :

var paint = new SKPaint { 
    IsAntialias = true 
}; 
canvas.DrawPath (path, paint); 

경로 곡선 :

당신이 필요한 경우 둥근 모서리와 같은 경로의 곡선은 다양한 커브 방법을 사용해야합니다. 이들은 포함하지만 SKPath.ArcTo()'SKPath.CubicTo()에 국한되지 않습니다 :

var path = new SKPath(); 
path.MoveTo(10, 10); 
path.ArcTo(SKRect.Create(10, 10, 30, 30), 0, 45); 

경로 문서 : https://developer.xamarin.com/api/type/SkiaSharp.SKPath/

+0

안녕, 매튜, 감사합니다. 실제로 경로를 매끄럽게 만드는 방법을 찾고 있습니다. 네가 내가 원하는 것을 이해할 것이라고 믿는다. 네가 준 대답은 내가 찾는 것이 아니다. –

+0

내 경로가 많은 점이 없으므로 부드러운 선이 아닙니다. 그러나 Path가 정적이 아니기 때문에 ArcTo 또는 CubicTo를 사용하여 베 지어를 만들 수는 없습니다. –

+0

다른 플랫폼에서 이러한 기능을 제공하는 많은 그래픽 라이브러리가 있다고 생각합니다. Skiasharp 양식에서도 똑같은 것을 찾고 있습니다. –

관련 문제