如何剪掉viewBox之外的内容?

时间:2013-02-25 10:02:38

标签: javascript html svg jquery-svg svg-edit

是否有一种功能或方法来剪切视图框外的路径而不是隐藏它?

我正在使用svg-edit,它有一个视图框,一个画布区域。在画布之外绘制的所有内容都是隐藏的。但是,当收集编辑器的输出并将其粘贴到图形编辑器(如Inkscape)中时,将显示整个图形。我希望视图框外的绘图完全从编辑器的输出中剪切。因此,例如,如果我有一个在画布外面一半的圆圈,那么编辑器的输出将是半圈而不是整个圆圈只有一半隐藏。

我想改变主题路径本身的几何形状,而不仅仅是将其隐藏起来。

我正在对svg-edit进行修改:http://code.google.com/p/svg-edit/

1 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是将clip-path应用于根svg元素。

如果你想要它可以是一个简单的矩形区域,或另一个更复杂的形状,如下例所示:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" 
     xmlns:xlink="http://www.w3.org/1999/xlink"     
     viewBox="-100 -100 300 300"
     clip-path="url(#clip)">
  <defs>
    <clipPath id="clip">
      <rect width="100" height="100" rx="10"/>
      <path d="M40 99l10 11 10 -11z"/> 
    </clipPath>
  </defs>

  <rect id="background" width="120" height="120" fill="slateblue"/>
  <image xlink:href="images/man.png" width="100" height="110" 
         preserveAspectRatio="xMidYMax meet"/>
</svg>

在线查看here

在您的情况下,您可能只希望<rect>元素中只有一个<clipPath>与viewBox具有相同的尺寸。