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;
}
}
var assembly = this.GetType().GetTypeInfo().Assembly;
using (var s = assembly.GetManifestResourceStream("MyAssembly.Core.Hold.svg"))
{
if (s != null)
{
svg = new SKSvg();
svg.Load(s);
using (SKPaint paint = new SKPaint())
{
canvas.DrawPicture(svg.Picture, paint);
}
}
}
3条答案
按热度按时间wtzytmuj1#
这里有两个可能的解决方案,开始与SkiaSharp合作,这对我来说是有效的:
从Asset文件夹(或子文件夹)加载SVG:
其中“assetSvgFileLoc”是要加载的svgFilename.svg,包括(如果是这种情况)Asset文件夹内的路径(例如“subf1/subf2/mysvg.svg”)。
将SVG作为RAW资源加载
在本例中,该文件位于Resources子文件夹“raw”中,“svgName”是我们的svg的文件名,没有扩展名。
thigvfpy2#
为了完成接受的答案,下面是如何从URL加载
SKSvg
。6psbrbz93#
我正在使用这个代码,它工作得很好。我可以在PCL,iOS或Android文件夹中拥有SVG。
只要记住在路径中包括程序集。