Javascript Fabric.js 3.4-动态调整组或多边形上的SVG strokeWidth
我有一个应用程序(基于fabric.js 3.4),允许用户通过滑块实时调整SVG(组或多边形)的笔划。然而,这似乎打破了形象。因此,例如,如果我有一个SVG(组),一个笑脸,眼睛有两个圆圈(笔划),一个有笔划的嘴和外圆——更新滑块以增加笔划宽度,使图像变形,使眼睛等开始重叠/移动(即,不作为一个单位/图像缩放在一起),或者图像“闪烁”-滑块移动时消失/重新出现 用于更新的代码是:Javascript Fabric.js 3.4-动态调整组或多边形上的SVG strokeWidth,javascript,svg,fabricjs,stroke,Javascript,Svg,Fabricjs,Stroke,我有一个应用程序(基于fabric.js 3.4),允许用户通过滑块实时调整SVG(组或多边形)的笔划。然而,这似乎打破了形象。因此,例如,如果我有一个SVG(组),一个笑脸,眼睛有两个圆圈(笔划),一个有笔划的嘴和外圆——更新滑块以增加笔划宽度,使图像变形,使眼睛等开始重叠/移动(即,不作为一个单位/图像缩放在一起),或者图像“闪烁”-滑块移动时消失/重新出现 用于更新的代码是: var value = //get value from slider widget var obj = ca
var value = //get value from slider widget
var obj = canvas.getActiveObject();
if (obj && obj.type == "group") {
for (i = 0; i < obj._objects.length; i++) {
if (obj._objects[i]) {
obj._objects[i].set({ strokeWidth: value });
}
}
} else if (obj && obj.type == "polygon") {
obj.set({ strokeWidth: value });
}
canvas.renderAll();
var value=//从滑块小部件获取值
var obj=canvas.getActiveObject();
如果(obj&&obj.type==“组”){
对于(i=0;i
这样做是错误的吗?
任何帮助都将不胜感激。缩放组内元素的正确方法是更改组本身的
scale
值:
group.set({scaleX:value,scaleY:value})
但是,如果需要更改组内对象的某些值,请确保在附近调用调用
canvas.renderal()
,以更新组的所有必要值。请参阅我最近的回复,了解更多详细信息。缩放组内元素的正确方法是更改组本身的缩放值:
group.set({scaleX:value,scaleY:value})
但是,如果需要更改组内对象的某些值,请确保在附近调用调用canvas.renderal()
,以更新组的所有必要值。请参阅我最近的回复,了解更多详细信息。谢谢您的回复。虽然我不想缩放SVG。换句话说,如果我的SVG以400px 400px的速度放置在画布上,我希望笔划根据滑块输入变得更胖/更瘦,而不影响比例。(还是要400x400px)。我不确定我将如何使用Update添加,因为我没有向画布添加任何新内容,只是更改已有内容的storkeWidth。事实上,我不介意大小是否必须增加/缩小一点以适应更厚/更薄的笔划宽度,但缩放不是我的主要目标。我尝试在整个组上设置strokeWidth——obj.set({strokeWidth:value});--但这似乎只是增加了SVG周围的填充区域,而不会影响SVG本身。感谢Adam的回复。尽管我不想缩放SVG。换句话说,如果我的SVG以400px 400px的速度放置在画布上,我希望基于滑块输入的笔划变得更胖/更瘦,而不会影响缩放。(还是要400x400px)。我不知道如何添加更新,因为我不是在画布上添加任何新内容,只是更改已有内容的storkeWidth。事实上,我不介意大小是否必须增大/缩小一点以适应较厚/较薄的笔划宽度,但缩放不是我的主要目标。我尝试在整个组上设置strokeWidth--obj.set({strokeWidth:value});--但这似乎只是增加了SVG周围的填充区域,而不会影响SVG本身。