如何将 svg 图形组缩放到所需的大小(不是按因子)?
我有 svg 图形组(我的意思是路径、重新排列等)。我想将组缩放到一定大小,例如 70,70。我知道 svg 提供了比例变换,但是比例变换需要我不知道的比例因子,因为组可以有很多形状,并且确定整个组的边界大小并不容易。
我使用了 svg element 的 viewBox 参数和preserveAspectRatio 参数,但无法获得所需的结果(缩放组为 70,70)。
也许可以使用 maxtrix 变换来缩放组或存在其他方式?
I have svg graphics group (I mean paths, recatangles etc.). I want to scale group to certain size, for examle to 70,70. I know that svg provides scale transformation, but scale transformation needs scale factor that I don't know because group can have many shapes and it's not easy to determine bounding size of whole group.
I played with viewBox parameter of svg elemenent and preserveAspectRatio parameter but I could not get desired result(scale group to 70,70).
Maybe is it possible to scale group with maxtrix transform or exists other way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 getBBox() 函数检索图形的当前大小,然后使用宽度和高度来计算应应用于图形的比例因子,以使其适合所需的大小。
在下面的示例中,g1 组中的图形被缩放以适合宽度和高度设置为 70 的矩形。
You can use the
getBBox()
function to retrieve the current size of the graphics and then use the width and height to calculate the scale factor that should be applied to the graphics to fit it into the desired size.In the example below the graphics in the group g1 is scaled to fit in a rectange with a width and height set to 70.
如果已经应用了路径\矩形转换,您可能会遇到一些将 SVG 元素放入矩形边界的问题。
下面的代码演示了如何适应经过分组、倾斜、缩放和转换到边界的转换后的反应输入。您必须保留现有的转换并应用新的转换。
代码正在做接下来的事情:
确切的行是:
此代码对于所有 svg 元素都是通用的,因此任何形状都可以适合给定的矩形:
GitHub要点链接
You might face some issues to fit the SVG element into a rectangle bound if path\rect transformations are already applied.
The code below is demonstrating how to fit transformed react input that grouped, skewed, scaled and transformed into the bounds. You have to preserve existing transformations and apply new transformations.
Code is doing next things:
Exact line is:
This code is generic for all the svg elements, so any shape can be fit into the given rect:
GitHub gist link