使用SkiaSharp在Xamarin中加载SVG文件
问题描述:
从版本1.55.0开始,SkiaSharp支持读取SVG文件。 该软件包已于几天前发布(2016年11月10日),我无法找到足够的文档说明如何使用它。使用SkiaSharp在Xamarin中加载SVG文件
下面的包是必需的: SkiaSharp 1.55.0 SkiaSharp访问量&层1.55.0 SkiaSharp.Svg 1.55.0-β1
的第一个问题是什么是加载在Xamarin的SKSvg的最佳方式.Android?
答
这里有两个可能的解决方案开始与那些工作对我来说SkiaSharp工作:从资产文件夹(或子文件夹)
加载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;
}
}
其中 “assetSvgFileLoc” 是svgFilename。 svg加载,包括(如果是这种情况)Asset文件夹内的路径(例如“subf1/subf2/mysvg.svg”)。
加载SVG作为原始资源
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;
}
}
在这种情况下,文件是资源的子文件夹“原始”和“svgName”里面是我们没有扩展名SVG的文件名。