html控制图的宽,用JointJS做一个简单的功能控制图

这篇博客介绍了如何利用开源绘图库JointJS创建一个简单的自动化功能控制图。首先,文章展示了JointJS的基本用法,包括创建画板、画布、图形元素以及连接线。接着,详细解释了如何定义画板、画布的属性以及图形元素和连接线的样式。随后,通过创建基础图例元素如与门、或门和非门,并设置它们的连接点,实现了将图例元素拖入绘图区域的功能。最后,定义了鼠标事件来支持图例元素的拖放操作,当图例元素被拖入绘图区域时,会在相应位置创建新的绘图元素。
摘要由CSDN通过智能技术生成

继上一篇介绍了GoJS之后,继续研究JS的绘图工具,毕竟GoJS有些小贵。这次选择了JointJS,完全开源,它还有一个商业版本叫Raddit,功能更强大。不过就我的需求场景,开源的Joint就足够了。接下来,我们看看它是怎么使用的。

JointJS是基于Backbone开发的,所以使用Joint之前,要先引入Backbone的相关依赖,所以我们的HTML文件是这样的:

JointJS Sample

这里我都用CDN,也可以将相应的库载到本地,但需要注意的是JS的加载顺序不能改。接下来,我们写一个官方的HelloWorld:

window.οnlοad=function() {

var graph = new joint.dia.Graph; // 创建画板,所有图上的元素都在画板里

var paper = new joint.dia.Paper({ // 创建画板上的画布,画布是用来渲染画板

el: document.getElementById('myGraph'), // 指向HTML里ID为"myGraph"的元素

model: graph, // 指定画板

width: 600, // 画布宽600像素

height: 100, // 画布高100像素

gridSize: 1, // 画布上元素拖动时步进的像素,默认1,设的高方便对齐

background: { // 画布背景色

color: 'rgba(0, 0, 0, 0.1)'

},

});

// 创建一个矩形

var rect = new joint.shapes.standard.Rectangle();

rect.position(100, 30); // 矩形左上角的位置,x:100,y:30,单位像素

rect.resize(100, 40); // 矩形大小,宽100,高40,单位像素

rect.attr({

body: {

fill: 'blue' // 填充色

},

label: {

text: 'Hello', // 矩形上显示的文字

fill: 'white' // 文字颜色

}

});

rect.addTo(graph); // 将上面定义的矩形加入到画板中

var rect2 = rect.clone(); // 复制一个相同的矩形

rect2.translate(300, 0); // 将矩形在水平方向上向右移动300像素

rect2.attr('label/text', 'World!'); // 设置矩形2上的文字

rect2.addTo(graph); // 将矩形2加入到画板中

// 创建一条连线

var link = new joint.shapes.standard.Link();

link.source(rect); // 连线头为矩形1

link.target(rect2); // 连线尾为矩形2

link.addTo(graph); // 将上面定义的连线加入到画板中

}

从上例里,我们可以看出,使用JointJS开发主要的步骤就是创建画板、创建画布、创建图形,然后将图形置于画板中。上面的例子执行后会得到下面的图像。

HelloWorld!

JointJS中的图形主要有两类,一是”元素”(Element),由构造函数创建。上例中的矩形就是JointJS库提供的标准元素,其构造函数为joint.shapes.standard.Rectangle。元素创建后,可以设置各种参数,比如位置,大小,风格等。JointJS提供了丰富的内置元素如矩形,圆形,椭圆等,可以参考API文档。同时,我们可以通过扩展joint.dia.Element类来自定义元素。

另一类图形是”连接”(Link),用来将两个”元素”连起来,一般显示为一条连线。上例中的连线是通过JointJS库提供的标准构造函数joint.shapes.standard.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值