Fabric.js 如何使 SVG 适应父对象

How to fit SVG into parent object in Fabric.js

如何在 Fabric.js loadSVGFromString 方法中设置 SVG 大小? 我找不到适合父对象的任何解决方案 (groupSVGElements)。还检查了文档,但在我刚刚看到的任何地方,他们总是使用具有 SVG 的 canvas 尺寸。

示例:http://codepen.io/bajzarpa/pen/wJOOdB?editors=1010

因为您当前的 SVG 元素不包含任何 widthheight 属性,您需要使用viewBox.baseVal.widthviewBox.baseVal.height 分别得到它的 widthheight 并相应地设置它以适应父对象。

// get the svg's width and height
let svg = document.querySelector('#testvg');
let svgWidth = svg.viewBox.baseVal.width;
let svgHeight = svg.viewBox.baseVal.height;

// set to fit into a parent object (canvas)
graphic.set({
    top: 5,
    left: 5,
    width: svgWidth,
    height: svgHeight,
    scaleX: (canvas.width - 10) / svgWidth,
    scaleY: (canvas.height - 10) / svgHeight
 });

WORKING DEMO on CodePen