首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用SkiaSharp加载Xamarin中的SVG文件

用SkiaSharp加载Xamarin中的SVG文件
EN

Stack Overflow用户
提问于 2016-11-19 12:34:43
回答 3查看 5.8K关注 0票数 2

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

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-11-19 12:34:43

这里有两种可能的解决方案,可以开始使用适合我的SkiaSharp:

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

代码语言:javascript
复制
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,包括(如果是这样的话)资产文件夹中的路径(例如”subf1 1/subf1 2/mysvg.svg“)。

将SVG加载为原始资源

代码语言:javascript
复制
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;
    }
}

在本例中,文件位于Resources子文件夹"raw“中,"svgName”是我们的svg的文件名,没有扩展名。

票数 7
EN

Stack Overflow用户

发布于 2019-03-26 21:44:38

要完成接受的答案,下面是如何从URL加载SKSvg

代码语言:javascript
复制
SkiaSharp.Extended.Svg.SKSvg svg = new SkiaSharp.Extended.Svg.SKSvg();
using (WebClient client = new WebClient())
{
     svg.Load(new MemoryStream(client.DownloadData(new Uri(ResourceUrl))));
}
票数 1
EN

Stack Overflow用户

发布于 2020-05-20 14:29:10

我正在使用这段代码,它工作得很好。我可以在PCL、ios或Android文件夹中使用SVG,只需记住将程序集包含在路径中即可。

代码语言:javascript
复制
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);
}
}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40692945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档