当前位置: 首页 > Web前端 > JavaScript

学习antvx6图像编辑引擎

时间:2023-03-27 18:28:55 JavaScript

先附上x6的地址https://x6.antv.vision/zh/doc...然后附上一个基于x6的项目地址https://github.com/rxdrag/rx-...(使用的技术是mobx和Material-UI,不得不说,代码写得真好,以类为类型,文件间引用嵌套,真是厉害。ts的使用超棒,代码真的有一个多行还是少行。感觉)公司不知道怎么找,就想弄这个东西。一开始他们也不知道怎么办,就放了一张原型图说要做这个,其他的也没说。扔给我这两个网址,让我觉得自己不想做也得做。根据rx-models-client项目,一开始想着移植别人的代码,用redux重写。结果是我高估了。一直用redux的思路看mobx,结果一塌糊涂,不知道怎么改代码。带着崩溃的心情看了两天代码,放弃了原来的想法,借用了rx-models-client,然后Write。果然又是一村,在别人的代码里找到了一个叫component的属性,可以自定义组件。(这也不能怪我,官网的文档写了一半,还有很多api和properties找不到),然后在官网https上发现了自定义组件的例子://x6.antv.vision/zh/exa...当当当当当当当当当当还原原型图先记录一下AntvX6的使用,先介绍介绍,介绍inletimport{Graph,Shape,Addon}from'@antv/x6';然后,实例化constgraph=newGraph({container:document.getElementById('graph-container')!,grid:true,})ofnewGraph如果参数在官网有说明,请自行查看。实例化图的属性和方法不再赘述。官网没有特别介绍,只是穿插在其他楼盘介绍中。newGraph({connecting:{anchor:'center',connectionPoint:'boundary',}})connecting是两个节点之间连线的属性,文档在这里(虽然写成interaction,但是有一个属性连接)https://x6.antv.vision/zh/doc...Graph.registerNode(),注册节点的方法请参考https://x6.antv.vision/zh/doc...请注意是大写的G,Graph,而不是实例的graph.createNode()创建节点,创建后即可使用。具体参数参考文档的基类cell和node节点。有一个文档中没有出现的属性组件,用于自定义组件graph.addNode()添加节点,将节点添加到图画布中,参考自定义节点graph.removeNode()的例子去掉节点,参数是节点idgraph.on()是监听事件,必须用到,查看文档https://x6.antv.vision/zh/doc...graph.addEdge({source,target,})添加两个节点之间的连接,写法是结构赋值的写法,应该是({source:source,target:target})graph.dispose()销毁画布,如果有画布不止一个,这个方法就派上用场了,不然画布里面会嵌套画布newGraph({autoResize:true//是否监听容器大小变化,自动更新画布大小})像这样写

啊也就是说,外层容器必须有宽度和高度。config方法修改内置边缘的默认行为。Shape.Edge.config({attrs:{line:{stroke:'#7c68fc',strokeWidth:1,},},zIndex:10,});graph.on('edge:connected',this.addEdge);可以用来监听连接的完成,虽然graph.getCellById得到的是节点或者边,但是不一定可以调用节点或者边的方法,需要判断graph.addEdge()来添加连接,连接会沿着节点的边移动,目前我只了解这些,以后再添加对未来的发展有了新的认识