使用SkiaSharp在Xamarin中加载SVG文件

Dan*_* D. 2 svg android xamarin.android xamarin skiasharp

从1.55.0版开始,SkiaSharp支持读取SVG文件。该软件包已于几天前(2016年11月10日)发布,我找不到足够的文档来了解如何使用它。

需要以下软件包:SkiaSharp 1.55.0 SkiaSharp视图和图层1.55.0 SkiaSharp.Svg 1.55.0-beta1

第一个问题是在Xamarin.Android中加载SKSvg的最佳方法是什么?

Dan*_* D. 5

这两种开始与SkiaSharp一起使用的可行解决方案对我有用:

从Asset文件夹(或子文件夹)加载SVG:

public SKSvg LoadAnSvgFromAssets(Context ctx, string assetSvgFileLoc)
    {
        var assets = ctx.Assets;
        var svg = new SKSvg();
        using (var stream = new StreamReader(assets.Open(assetSvgFileLoc)))
            {
              svg.Load(stream.BaseStream);
              return svg;
            }
    }
Run Code Online (Sandbox Code Playgroud)

其中“ assetSvgFileLoc”是要加载的svgFilename.svg,包括(如果是这种情况)Asset文件夹内的路径(例如“ subf1 / subf2 / mysvg.svg”)。

将SVG加载为RAW资源

public SKSvg LoadAnSvgFromResources(Context ctx, string svgName))
  {
    var resId = ctx.Resources.GetIdentifier(svgName, "raw", ctx.PackageName);           
    var svg = new SKSvg();
    using (var stream = ctx.Resources.OpenRawResource(resId))
    {
        svg.Load(stream);
        return svg;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,文件位于Resources子文件夹“ raw”内,“ svgName”是我们svg的文件名,不带扩展名。