如何在没有ViewBox参数的情况下编写可伸缩的SVG?

时间:2016-01-09 17:45:14

标签: c# css wpf xaml svg

我使用的是一个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适当缩放,而不会导致插件失败?  Icon Comparison

1 个答案:

答案 0 :(得分:1)

我怀疑您对第一个文件遇到的问题是因为它没有指定widthheight。如果添加

会发生什么
 width="512" height="512"

到该文件中的<svg>标记。这有什么不同吗?