3

我正在使用 Xamarin 表单制作应用程序。

我想用 SKPath 绘制一条平滑的路径(样条线),但我找不到一种简单的方法来实现这一点。

Skiasharp 目前不支持它,除非我自己顺利制作路径。

谢谢。

4

2 回答 2

5

SkiaSharp 支持三次贝塞尔曲线。因此,您可以做的是将样条线划分为段(点确定段端点),并使用三次贝塞尔曲线绘制每个段。为此,您需要在样条曲线的每个点之间引入两个控制点。需要选择这些点,以便相邻段中的曲线平滑连接。

我只是做了一个实现。该public static SKPath CreateSpline(params SKPoint[] Points)方法生成可用于在点之间绘制样条线的路径。您可以在此处查看实现:

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

例子:

样条示例

于 2017-06-18T15:05:12.240 回答
3

我不确定您到底在问什么,但是有两个平滑区域:

抗锯齿使用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/

于 2017-01-23T11:39:36.917 回答