【问题标题】:How to clip away content that is outside the viewBox?如何剪掉 viewBox 之外的内容?
【发布时间】:2013-02-10 10:39:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 请使用标签svg-edit标记您与svg-edit相关的问题。
  • 这个问题不够清楚,我无法回答。有什么限制,你的预期结果是什么?你试过什么?
  • 我正在使用 svg-edit,它有一个视图框和一个画布区域。在画布之外绘制的所有内容都是隐藏的。但是,当编辑器的输出被收集并粘贴到 Inkscape 等图形编辑器中时,整个绘图就会出现。我希望从编辑器的输出中完全剪掉视图框外的绘图。因此,例如,如果我有一个在画布外一半的圆圈,那么编辑器的输出将是半个圆圈,而不是整个圆圈,只是隐藏了一半。

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


【解决方案1】:

一种方法是将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。

在您的情况下,您可能只希望在 &lt;clipPath&gt; 元素内有一个与 viewBox 具有相同尺寸的 &lt;rect&gt;。

【讨论】:

  • 剪辑路径不会改变形状本身的几何形状。如果答案不够清楚,我很抱歉,但这正是我所需要的。我对其进行了编辑以反映我的真实意图。
  • 并非 svg 中的所有内容都是几何图形(例如过滤器),因此即使您进行了几何图形裁剪,也不能保证内容保留在 viewBox 内。
  • 所提供的链接仅显示米色大屏幕(在 FF 75 上)
猜你喜欢
  • 2011-11-03
  • 2011-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-07
相关资源
最近更新 更多