2017-01-23 3 views

Répondre

3

SkiaSharp soutient courbes de Bézier cubiques. Donc, ce que vous pouvez faire, c'est diviser la spline en segments (les points déterminent les extrémités du segment), et dessiner chaque segment en utilisant une courbe de Bézier cubique. Pour ce faire, vous devez introduire deux points de contrôle entre chaque point de votre courbe spline. Ces points doivent être sélectionnés de sorte que les courbes dans les segments voisins se connectent en douceur.

Je viens de faire une implémentation de cela. La méthode public static SKPath CreateSpline(params SKPoint[] Points) génère un chemin que vous pouvez utiliser pour dessiner une spline entre les points. Vous pouvez voir ici la mise en œuvre:

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

Exemple:

Spline example

+0

Hey Peter, Super travail. Merci pour votre partage. Je vous en suis reconnaissant. –

2

Je ne sais pas exactement ce que vous demandez, mais il y a deux zones de lissage:

Anti-aliasing en utilisant SKPaint.IsAntialias:

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

Courbes de chemin:

Si vous avez besoin courbes dans le chemin, tels que les coins arrondis, vous devrez utiliser les différentes méthodes de courbe. Ceux-ci comprennent, mais sans s'y limiter, SKPath.ArcTo() et 'SKPath.CubicTo():

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

Chemin docs: https://developer.xamarin.com/api/type/SkiaSharp.SKPath/

+0

Salut, Matthew, merci pour la réponse. Je suis en train de trouver un moyen de rendre mon chemin fluide. Je crois que vous comprendriez ce que je demande. La réponse que vous avez donnée n'est pas ce que je cherche. –

+0

Mon chemin n'a pas beaucoup de points, donc ce n'est pas une ligne lisse. Mais je ne peux pas utiliser ArcTo ou CubicTo pour rendre bezier parce que le Path n'est pas statique. –

+0

Je pense qu'il existe de nombreuses bibliothèques graphiques qui fournissent ces fonctionnalités sur d'autres plates-formes. et je cherche la même chose dans les formulaires Skiasharp. –