Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVG文件仅在某些地方有效_Svg - Fatal编程技术网

SVG文件仅在某些地方有效

SVG文件仅在某些地方有效,svg,Svg,我有一个非常简单的svg文件,一个书架,它是我从Inkscape中的公共域图像中提取的。 我的目的是在WinForms中使用SVG渲染器,从中生成可变宽度的位图 它在Inkscape中运行良好,但不希望在IE或Chrome、DevExpress Svg渲染器或公共域Svg查看器中显示 为了使XML在Inkscape之外工作,我应该在XML中做哪些更改 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg x

我有一个非常简单的svg文件,一个书架,它是我从Inkscape中的公共域图像中提取的。 我的目的是在WinForms中使用SVG渲染器,从中生成可变宽度的位图

它在Inkscape中运行良好,但不希望在IE或Chrome、DevExpress Svg渲染器或公共域Svg查看器中显示

为了使XML在Inkscape之外工作,我应该在XML中做哪些更改

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   id="svg11134"
   version="1.1"
   viewBox="0 0 100 9.9999993"
   height="10mm"
   width="100mm">
  <defs
     id="defs11128">
    <clipPath
       clipPathUnits="userSpaceOnUse"
       id="clipPath304">
      <path
         d="M 4410,3710 H 90 v -180 h 4320 z"
         id="path302" />
    </clipPath>
    <clipPath
       clipPathUnits="userSpaceOnUse"
       id="clipPath320">
      <path
         d="M 360,3890 90,3710 h 4320 l -270,180 z"
         id="path318" />
    </clipPath>
    <linearGradient
       x1="0"
       y1="0"
       x2="1"
       y2="0"
       gradientUnits="userSpaceOnUse"
       gradientTransform="matrix(-7.9e-6,180,180,7.9e-6,2250,3710)"
       spreadMethod="pad"
       id="linearGradient326">
      <stop
         style="stop-opacity:1;stop-color:#ebecea"
         offset="0"
         id="stop322" />
      <stop
         style="stop-opacity:1;stop-color:#d6d7d5"
         offset="1"
         id="stop324" />
    </linearGradient>
  </defs>
  <g
     transform="translate(13.396613,-100.26342)"
     id="layer1">
    <g
       id="g9848"
       transform="matrix(-0.62409419,0,0,0.93340311,-15.02437,93.369296)">
      <g
         transform="matrix(0.02909742,0,0,-0.02975968,4.8287909,123.15116)"
         id="g9840">
        <g
           id="g9838"
>
          <path
             d="M 4410,3710 H 90 v -180 h 4320 v 180"
             style="fill:#d6d7d5;fill-opacity:1;fill-rule:nonzero;stroke:none"
             id="path9836" />
        </g>
      </g>
      <g
         transform="matrix(0.02909742,0,0,-0.02975968,4.8287909,123.15116)"
         id="g9846">
        <g
           id="g9844"
>
          <path
             d="M 360,3890 90,3710 h 4320 l -270,180 H 360"
             style="fill:url(#linearGradient326);fill-opacity:1;fill-rule:nonzero;stroke:none"
             id="path9842" />
        </g>
      </g>
    </g>
  </g>
</svg>

grafics位于显示区域外的viewBox限制之外

Inkscape倾向于产生大量积垢,这使得在可视化编辑器之外维护和更改SVG几乎不可能。以下是简化为基本要素的相同图像,包括一些更改:

我已经删除了SVG的宽度/高度值。在此处以实际活动值给出尺寸:mm在大多数情况下都没有帮助。你说你想制作大小可变的位图。这相当于覆盖这些值,因此您可以在源文件中禁用它们。 grafic元素已在viewBox中移动,所有变换都已解决。 grafics不会填充整个viewBox宽度。我已经把他们的比例扩大到100:10。 如果要更改高宽比,可以在元素上设置属性preserveAspectRatio=none,并在导出程序中设置任意输出维度。然后,grafics将非均匀缩放,并始终填充视口


明亮的非常感谢。