2016-11-19 63 views
1

从版本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?

回答

3

这里有两个可能的解决方案开始与那些工作对我来说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的文件名。