首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Fabric JS点对点线

Fabric JS点对点线
EN

Stack Overflow用户
提问于 2020-03-19 09:04:16
回答 1查看 1.8K关注 0票数 0

我现在有了几种不同颜色的freedrawing。我想免费绘制线条部分,而不是完全免费绘制。我需要在地图上标出水和煤气线,例如6条线,每条线都是从最后一条线的末端开始的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function enableFreeDrawing() {
    removeEvents();
    canvas.isDrawingMode = true;
    canvas.freeDrawingBrush.color = e.target.value;
}

document.getElementById('colorpicker').addEventListener('click', function (e) {
    canvas.freeDrawingBrush.color = e.target.value;
    canvas.freeDrawingBrush.width = 2;
});

请建议我如何从每个点到另一个点画线,例如。单击6次,然后按enter或双击完成

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-20 02:24:34

在画布元素上,我会在每次单击时创建一个指示性圆点,并在每次创建新点时连接这些点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var canvas = new fabric.Canvas("canvas");
var waterPipePoints = [];
var waterPipeLines = [];

canvas.on("mouse:down", function(event) {
    var pointer = canvas.getPointer(event.e);
    var positionX = pointer.x;
    var positionY = pointer.y;

    // Add small circle as an indicative point
    var circlePoint = new fabric.Circle({
        radius: 5,
        fill: "blue",
        left: positionX,
        top: positionY,
        selectable: false,
        originX: "center",
        originY: "center",
        hoverCursor: "auto"
    });

    canvas.add(circlePoint);

    // Store the points to draw the lines
    waterPipePoints.push(circlePoint);
    console.log(waterPipePoints);
    if (waterPipePoints.length > 1) {
        // Just draw a line using the last two points, so we don't need to clear
        // and re-render all the lines
        var startPoint = waterPipePoints[waterPipePoints.length - 2];
        var endPoint = waterPipePoints[waterPipePoints.length - 1];

        var waterLine = new fabric.Line(
        [
            startPoint.get("left"),
            startPoint.get("top"),
            endPoint.get("left"),
            endPoint.get("top")
        ],
        {
            stroke: "blue",
            strokeWidth: 4,
            hasControls: false,
            hasBorders: false,
            selectable: false,
            lockMovementX: true,
            lockMovementY: true,
            hoverCursor: "default",
            originX: "center",
            originY: "center"
        }
        );

        waterPipeLines.push(waterLine);

        canvas.add(waterLine);
    }
});

canvas.renderAll();

请查看此示例SandBox:https://codesandbox.io/s/stackoverflow-60753858-fabric-js-1720-26twl

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60753858

复制
相关文章
Fabric.js 上划线、中划线(删除线)、下划线🎭
Fabric.js 作为一个老牌 canvas 库,当然也提供中划线和下划线的配置啦,除此之外还提供了上划线的配置。\n\n\n
德育处主任
2022/08/30
2.6K0
Fabric.js 上划线、中划线(删除线)、下划线🎭
Fabric.js 右键菜单
Fabric.js 默认**没提供 鼠标右键事件**,只有 鼠标按键点击 、鼠标按键抬起 、鼠标移动 等事件。 但在工作中有可能需要用到 “右键” 事件,比如 “右键菜单” 。所以就有了本文。 本文主要关注 Fabric.js 的主要 api 有:
德育处主任
2022/04/17
7.1K0
Fabric.js 右键菜单
Fabric.js 缩放画布 🍬
getZoom 可以获取画布当前缩放级别,用 setZoom 设置一个新的缩放级别。
德育处主任
2022/06/10
5.8K0
Fabric.js 缩放画布 🍬
Fabric.js 变换视窗
fabric.js 可以通过 viewportTransform 属性配置画布的视窗属性。
德育处主任
2022/09/23
3.5K0
Fabric.js 变换视窗
Fabric.js 拖拽平移画布
不过我们可以利用一些小技巧让画布具有被拖拽的能力,fabric.js 官网也提供了一个 demo ,但文档上并没有详细的讲解拖拽画布的实现原理。
德育处主任
2022/09/23
3.4K0
Fabric.js 拖拽平移画布
fabric.js和高级画板
本文介绍fabric.js框架使用,以及使用fabricjs打造一个高级画板程序. 高级画板功能介绍 全局绘制颜色选择 护眼模式、网格模式切换 自由绘制 画箭头 画直线 画虚线 画圆/椭圆/矩形/直角
磊哥
2018/07/04
4.6K0
Fabric.js 居中元素 🎗️
阅读本文需要你有一定的 Fabric.js 基础,如果还不太了解 Fabric.js 是什么,可以阅读 《Fabric.js 从入门到膨胀》
德育处主任
2022/06/10
3.7K0
Fabric.js 居中元素 🎗️
Fabric.js 圆形笔刷
圆形笔刷是作用在 “自由绘制” 的画笔之上的。从名字就可以看出,这个笔刷会用一个个圆形来填充绘制的路径。
德育处主任
2022/06/10
2.3K0
Fabric.js 圆形笔刷
fabric.js和高级画板
本文介绍fabric.js框架使用,以及使用fabricjs打造一个高级画板程序. 高级画板功能介绍 全局绘制颜色选择 护眼模式、网格模式切换 自由绘制 画箭头 画直线 画虚线 画圆/椭圆/矩形/直角
磊哥
2018/05/08
11.3K1
fabric.js和高级画板
Fabric.js 自由绘制椭圆
持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
德育处主任
2022/09/23
2.7K0
Fabric.js 自由绘制椭圆
Fabric.js 铅笔笔刷
fabric.js 的铅笔其实是继承基础画笔的一个工具,在基础画笔的基础上多了“拐角平滑度”等配置项。
德育处主任
2022/09/23
1.6K0
Fabric.js 铅笔笔刷
Fabric.js 从入门到________
如果你需要用 canvas 做特效,那我推荐你使用 Fabric.js ,因为 Fabric.js 语法更加简单易用,而且还提供了很多交互类的 api。
德育处主任
2022/04/17
13.5K0
Fabric.js 从入门到________
Fabric.js 控制元素层级 👑
元素数量多了,难免会产生重叠。又或者某些效果需要几个元素重叠起来。这些情况大概率需要控制元素的层级。
德育处主任
2022/08/31
4K0
Fabric.js 控制元素层级 👑
Fabric.js 元素中心缩放
如果想将默认缩放操作设置为“中心缩放”,只需将 centeredScaling 属性设置为 true 即可。
德育处主任
2022/09/23
3.1K0
Fabric.js 元素中心缩放
Fabric.js 自由绘制圆形
Fabric.js 默认的框选操作是矩形,如果需要做到上图的效果,需要做以下3步:
德育处主任
2022/04/17
3.8K0
Fabric.js 自由绘制圆形
Fabric.js 精简输出的JSON🎫
如果你还不太了解 Fabric.js 的序列化和反序列化,可以看看 Fabric.js 序列化 和 Fabric.js 反序列化。
德育处主任
2022/06/10
4.7K0
Fabric.js 精简输出的JSON🎫
Fabric.js 自定义控件
虽然 Fabric.js 提供的基础功能已经很丰富了,但有时难免需要定制一些需求。比如本文要讲的 『自定义控件』。掌握创建自定义控件这个功能,能够创建更加精美和实用的图形应用程序,提高用户体验和用户满意度。
德育处主任
2023/03/12
4.9K0
Fabric.js 自定义控件
js实现抛物线
这个是很简单的一种方式,利用了css3的transition属性 <!DOCTYPE html> <html lang="en" style="width:100%;height:100%;"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width"> <style> * { padding: 0; margin:
windseek
2018/06/15
1.1K0
WebRTC 点对点直播
作者:villainthr WebRTC 全称为:Web Real-Time Communication。它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer-to-peer(就是浏览器
腾讯IVWEB团队
2017/03/13
10.2K0
Fabric.js 复制粘贴元素
当你要复制一个 fabric 的元素时,你考虑到的是什么?是深拷贝当前选中对象再添加到画布中?
德育处主任
2023/06/10
7240
Fabric.js 复制粘贴元素

相似问题

Fabric.js指南/出血线

116

使用Fabric JS定义标签线

131

画布点对点用户线

12

用实时测量fabric.js绘制线

10

使用fabric.js创建参考线和网格标尺

1209
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文