【问题标题】:freeDrawingBrush.onMouseMove fix x or y to draw only straight linefreeDrawingBrush.onMouseMove 修复 x 或 y 以仅绘制直线
【发布时间】:2021-11-27 00:57:43
【问题描述】:

我正在尝试使用 freeDrawingBrush 绘制一条使 x 修复的直线。

例如:

          canvas.isDrawingMode = 1;
          canvas.freeDrawingBrush.color = "purple";
          canvas.freeDrawingBrush.width = 10; 

          canvas._onMouseMoveInDrawingMode = function (e) {
           
                var pointer = canvas.getPointer(e);
                pointer.x = 100;
                
                this.freeDrawingBrush.onMouseMove(pointer);
            
        }

这在做这项工作,但它在 mousemove 上不断绘图。我希望用户能够在 y 轴上的某个距离处(例如)x=100 绘制多条线。

更新:

我添加了以下代码:

          canvas._onMouseUpInDrawingMode = function (e) {


            this._isCurrentlyDrawing =  false;
            //canvas.selection = true;
            canvas.isDrawingMode = 0;

            this.freeDrawingBrush.onMouseUp();
            this._handleEvent(e, 'up');

        }

这会停止连续绘制,但会出现新问题。当我再次启用绘图模式并尝试绘制新行时,它还会将上一行添加到新行

【问题讨论】:

  • freedrawing 画笔中有一些代码可以让您在鼠标移动时按 shift 画一条直线。您可以查看该代码并扩展它以获得水平或垂直线
  • 您能否提供有关您正在谈论的freedrawing画笔的链接...我找不到它..如果可以的话,那将是很大的帮助。谢谢
  • 当前库中的主人,铅笔刷

标签: fabricjs


【解决方案1】:

经过大量研究,我找到了方法:

var brush = new fabric.PencilBrush(canvas);
canvas.isDrawingMode = 1;
brush.width = 10;
     
canvas._onMouseMoveInDrawingMode = function (e) {
       
    var pointer = canvas.getPointer(e);
    pointer.x = 100;
            
    brush.onMouseDown({x:pointer.x, y:pointer.y});
        
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多