我使用的是一个C#库,它不支持SVG文件中的viewBox
参数,但如果没有它我会因为无法正确缩放而截断我的图像,详情如下......
我使用xamarin表单平台和this nuget插件(在XAML和C#中)编写移动应用程序。该插件具有非常有限的SVG支持,因此我不得不手动更改svg文件。生成后,Google+图片会显示以下第一个标记,但是,当我使用此文件时,会收到以下错误消息:
<svg id="Capa_1" data-name="Capa 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><title>Google_Round</title><
System.Exception:上下文创建的参数无效 在CoreGraphics.CGContext.set_Handle(IntPtr值)[0x00010] /Users/builder/data/lanes/2377/73229919/source/maccore/src/CoreGraphics/CGContext.cs:161 at CoreGraphics.CGContext..ctor(IntPtr handle,Boolean owns)[0x00006] in /Users/builder/data/lanes/2377/73229919/source/maccore/src/CoreGraphics/CGContext.cs:141 在CoreGraphics.CGBitmapContext..ctor(IntPtr数据,nint宽度,nint高度,nint bitsPerComponent,nint bytesPerRow,CoreGraphics.CGColorSpace colorSpace,CGImageAlphaInfo位图信息)[0x00000]在/ Users / builder / data / lanes / 2377/73229919 / source / maccore / SRC / CoreGraphics中/ CGBitmapContext.cs:62 在NGraphics.iOS.Custom.ApplePlatform.CreateImageCanvas(大小,双刻度,布尔透明度)[0x0005c] in:0 在SVG.Forms.Plugin.iOS.SvgImageRenderer.OnElementChanged(Xamarin.Forms.Platform.iOS.ElementChangedEventArgs`1 e)[0x0010f] in:0
如果我将第一个标记更改为已知工作标示示例中第一个标记的副本,则会出现以下SVG文件。
<?xml version="1.0"?>
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" height="300" width="300" version="1.1" fill-opacity="0"> xml:space="preserve">
<path fill="#54534A" d="M2204.344,4414.691v-122.67h81.643h81.642l-1.237,6.804c-0.619,3.505-1.649,10.515-2.474,15.462l-1.443,8.659
h-61.438h-61.644v38.141v38.141h54.635h54.635v16.493v16.494h-54.635h-54.635v36.079v36.08h60.613h60.407l1.443,10.515
c0.825,5.979,2.062,13.401,2.68,16.493l1.237,5.979h-80.818h-80.612V4414.691z"/>
<!-- Various Strokes omitted -->
</g>
</svg>
这给了我以下显示的完整G +图标。我认为这是因为我丢失了文件中的viewBox
信息。我怎样才能包含这些信息以确保我的svg适当缩放,而不会导致插件失败?
答案 0 :(得分:1)
我怀疑您对第一个文件遇到的问题是因为它没有指定width
或height
。如果添加
width="512" height="512"
到该文件中的<svg>
标记。这有什么不同吗?