SVG 标记渲染视图框

发布于 2024-11-18 18:43:51 字数 343 浏览 5 评论 0原文

我正在尝试获取一个标记以在 SVG 中渲染 - 它应该是一个面向线条的开放箭头。标记被截断(可能是因为路径以 x 轴为中心)。如何扩展标记视图区域以便显示整个标记?

测试SVG文件为: http://www.robmunro.net/misc/arrows.svg

正确的输出应该是: http://www.robmunro.net/misc/arrows.png

I am trying to get a marker to render in SVG - it should be a open arrow facing into the line. The marker is cutoff (possibly because the path is centred on the x-axis). how do i extend the marker view area so that the whole marker shows?

The test SVG file is:
http://www.robmunro.net/misc/arrows.svg

The correct output should be:
http://www.robmunro.net/misc/arrows.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我不咬妳我踢妳 2024-11-25 18:43:51

您可以在标记元素上设置 overflow:visible ,默认情况下它会剪辑到标记图块的边界。然后对标记进行必要的调整以获得所需的对齐方式等。作为参考,制作一个半透明的矩形来覆盖标记图块的整个边界可能会有所帮助,以便您可以清楚地看到何时位于其外部。

You can set overflow:visible on the marker element, by default it clips to the bounds of the marker tile. Then make the necessary adjustments to the marker to get the alignment you want etc. For your reference it may help to make a semi-transparent rectangle that covers the full bounds of the marker tile so that you can clearly see when you are outside it.

小傻瓜 2024-11-25 18:43:51

你的标记的坐标是(15,-15),(0,15),(-15,-15),但只有标记只在(0,0)到(markerWidth,markerHeight)的框中绘制。如果您重新绘制标记,使其只有正值(带有一点边框),您可以看到您的标记:

<path d="M5,5 L20,20 5,35" />

并确保标记大小足够大:

markerWidth="25" markerHeight="40"

然后您可以使用 refX 确保它位于线上,并且reY 属性:

refX="20" refY="20"

总的来说应该是:

<marker id="stip_1163554992"  markerUnits="strokeWidth" orient="auto" refX="20" refY="20" markerWidth="25" markerHeight="40"  style="stroke:#ffff00;stroke-width:5.0px;stroke-opacity:1.0;stroke-linecap:round;stroke-linejoin:round;fill:none;">
  <path d="M5,5 L20,20 5,35" />
</marker>

The coordinates of your marker are (15,-15), (0,15), (-15,-15), but only the marker is only drawn in the box (0,0) to (markerWidth, markerHeight). You can see your marker if you redraw it such that it has only positive values (with a bit of a border):

<path d="M5,5 L20,20 5,35" />

And make sure the marker size is big enough:

markerWidth="25" markerHeight="40"

Then you can make sure it sits on the line by using the refX and reY attributes:

refX="20" refY="20"

All together it should be:

<marker id="stip_1163554992"  markerUnits="strokeWidth" orient="auto" refX="20" refY="20" markerWidth="25" markerHeight="40"  style="stroke:#ffff00;stroke-width:5.0px;stroke-opacity:1.0;stroke-linecap:round;stroke-linejoin:round;fill:none;">
  <path d="M5,5 L20,20 5,35" />
</marker>
疯狂的代价 2024-11-25 18:43:51

您可以在具有负原点的标记上设置 viewBox 属性。这使您可以避免调整标记形状本身的坐标。 refXrefY 点需要移动,因为它们相对于 viewBox 的左上角。

You can set a viewBox attribute on the marker with a negative origin point. This allows you avoid adjusting the coordinates of the marker shape(s) itself. The refX and refY point need to be shifted since they are relative to the upper left corner of the viewBox.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文