在 Xamarin.Forms 上使用 SkiaSharp 库绘制样条曲线(平滑路径)?
Draw spline(smooth path) with SkiaSharp lib on Xamarin.Forms?
我正在使用 Xamarin 表单制作应用程序。
我想用SKPath绘制一条平滑的路径(样条),但是我找不到简单的方法来实现。
Skiasharp目前不支持,除非我自己把路径弄平。
谢谢。
我不确定你到底在问什么,但有两个区域需要平滑:
Anti-aliasing 使用 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/
SkiaSharp 支持三次贝塞尔曲线。因此,您可以做的是将样条曲线分成几段(点决定段端点),并使用三次贝塞尔曲线绘制每段。为此,您需要在样条曲线的每个点之间引入两个控制点。需要选择这些点,使相邻段中的曲线平滑连接。
我刚刚实现了这个。 public static SKPath CreateSpline(params SKPoint[] Points)
方法生成一条路径,您可以使用该路径在点之间绘制样条曲线。您可以在此处查看实现:
示例:
我正在使用 Xamarin 表单制作应用程序。
我想用SKPath绘制一条平滑的路径(样条),但是我找不到简单的方法来实现。
Skiasharp目前不支持,除非我自己把路径弄平。
谢谢。
我不确定你到底在问什么,但有两个区域需要平滑:
Anti-aliasing 使用 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/
SkiaSharp 支持三次贝塞尔曲线。因此,您可以做的是将样条曲线分成几段(点决定段端点),并使用三次贝塞尔曲线绘制每段。为此,您需要在样条曲线的每个点之间引入两个控制点。需要选择这些点,使相邻段中的曲线平滑连接。
我刚刚实现了这个。 public static SKPath CreateSpline(params SKPoint[] Points)
方法生成一条路径,您可以使用该路径在点之间绘制样条曲线。您可以在此处查看实现:
示例: