2

リリース 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 を読み込む最善の方法は何ですか?

4

3 に答える 3

7

ここで、私のために働いている SkiaSharp での作業を開始するための 2 つの可能な解決策を示します。

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;
            }
    }

ここで、"assetSvgFileLoc" はロードする svgFilename.svg であり、アセット フォルダー内のパス (例: "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;
    }
}

この場合、ファイルは Resources サブフォルダー「raw」内にあり、「svgName」は拡張子なしの svg のファイル名です。

于 2016-11-19T12:34:43.647 に答える