fabricjs对角线hovercursor和可选择

问题描述 投票:2回答:3

我在fabricjs中有一些线,可能是一个角度。我希望用户能够选择它们,但选择轮廓是一个矩形,在行的末端有角。用户应该只能在光标在线上时选择线,或者至少在几个像素内选择线。所以我使用mousemove事件将光标设置在线上,并在点击它时执行其他操作。

但是fabricjs只允许我在selectable为true时设置光标,然后用户在该行周围获得这个蓝色矩形,这没有用。如何摆脱这个矩形,或者当selectable为false时让光标改变?

fabricjs
3个回答
0
投票

首先,将perPixelTargetFindtargetFindTolerance添加到fabric.Canvas实例中。

var canvas = new fabric.Canvas('canvas', {
    perPixelTargetFind: true,
    targetFindTolerance: 5
});

然后,将padding添加到fabric.Line实例。

var line = new fabric.Line([50, 50, 250, 250], {
    padding: 5
});

canvas.add(line);

就我所知,targetFindTolerance数值仅受对角线的尊重。就我所知,padding数值仅受水平线的尊重。必须为任何类型的线设置targetFindTolerancepadding以遵守规则。目前还不清楚这是有缺陷还是故意行为。


-1
投票

如果我理解正确的话,这应该让你相当接近:

fabricjs no handles

这是JavaScript代码:

var canvas = new fabric.Canvas('canvas', {
  width: 300,
  height: 300,
  perPixelTargetFind: true,
  selection: false,
  hoverCursor: 'default'
});
line = new fabric.Line([50, 50, 250, 250], {
  strokeWidth: 5,
  stroke: 'black',
  originX: 'center',
  originY: 'center',
  hasControls: false,
  hasBorders: false,
  targetFindTolerance: 8
});
canvas.add(line);

最后是所有重要的JSFiddle,https://jsfiddle.net/rekrah/tvcufesq/

如果您还有其他问题,请与我们联系。随时乐意为您服务!


-1
投票

尝试将padding和targetFindTolerance添加到line.padding

© www.soinside.com 2019 - 2024. All rights reserved.