【问题标题】:Draw polygon inside of the SVG defined viewport在 SVG 定义的视口内绘制多边形
【发布时间】:2018-03-11 04:43:31
【问题描述】:

我分别定义了 svg 580 和 707 视口的宽度和高度。 viewBox 的宽度和高度定义为 450 和 600。在 svg 中,我绘制了一些响应式多边形,这些多边形由用户给出,并立即使用 d3 渲染多边形。

例如,如果用户给定的输入足够大以绘制超出视口宽度的多边形,则在宽度内分配的部分将显示到网页,其余部分则不显示。如何在我定义的视口内渲染整个多边形?

更新:这里是 jsfiddle 链接:https://jsfiddle.net/riad1380/ww1xpnxy/

var viewBoxWidth = 580;
var viewBoxHeight = 707;

例如,如果用户给出 350 的半径值,它会在视口之外渲染,但我想在视口内绘制圆,而不考虑给定的半径,并且半径为 10 的圆应该被视为小于 100。

p>

【问题讨论】:

  • 您能提供一个可重现的代码示例吗?
  • 嗨,很抱歉回复晚了。我在帖子中附上了一个 jsFiddle

标签: javascript angularjs d3.js svg


【解决方案1】:

您需要更新 viewBox,使其涵盖 SVG 中的所有内容。

因此,如果用户输入 350 的半径,如果您希望整个圆可见,则 viewBox 的宽度和高度值至少需要为 700。根据圈子的位置(cxcy),您可能还需要更新 viewBoxxy 值。

【讨论】:

  • 您的意思是每次用户更新值时,我都需要重绘 svgContainer 吗?
  • 不一定要重绘。只需更新 viewBox 属性就足够了。浏览器将以新的比例为您重绘 SVG。
  • 我试过了,但它没有像你提到的那样给出预期的输出。请看:jsfiddle.net/riad1380/ww1xpnxy
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-21
  • 2017-06-23
  • 2012-03-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多