jTopo(一)

article/2025/8/14 19:11:48

jTopo(一)

一、jTopo是什么

jTopo(Javascript Topology library)是一款完全基于HTML5 Canvas的关系、拓扑图形化界面开发工具包。

jTopo关注于数据的图形展示,它是面向开发人员的,需要进行二次开发。

使用jTopo很简单,可以快速创建一些关系图、拓扑等相关图形化的展示。只要您的数据之间存在有关联关系,都可以使用jTopo来进行人性化、图形化的展示。

二、基础讲解

jtopo的核心对象有Stage、Layer、Canvas、Node、Link, 关系如下图:

img

顶层对象(Stage)

jtopo的核心对象之间存在层级结构,最顶层的为Stage,管理一个或者多个Layer,可以对Layer进行管理:添加、移除。

提供一些常规性的交互功能,比如:鼠标缩放、视图模式变换(普通、框选、拖拽、编辑、锁定)。

显示控制:按画布居中、1:1显示 导出图片等功能。

    var stage = new jtopo.Stage(“divId”);stage.show(); // 显示出来

层对象(Layer)

Layer 是一个抽象对象,默认是完全透明的,上层对象为Stage.

一个Layer下面可以有多个Node、Link对象,Node、Link对象只有放入Layer后才可能被绘制出来。

Layer 可以被平移、缩放,用户可以通过鼠标在画布上的拖拽 和 鼠标滚轮完成,也可以通过API来修改Layer的x、y坐标和缩放系数scaleX和scaleY实现同等效果。

一个Layer对象对应一个Canvas,多个Layer常用于画面逻辑分层,比如有的层绘制速度较慢,有的层绘制速度较快,有的层作为背景层,有的作为动画层。

    var stage = new jtopo.Stage();var layer = new jtopo.Layer(“layer-1);stage.addChild(layer); // 放入Stage//…stage.show(); // 显示出来

节点对象(Node)

用户操作的核心两个对象Node 、Link之一。

Node给人的形象是一个矩形,有坐标(x,y) 和 宽高尺寸(width、heigh)。

可以指定一个文本字符串,默认显示在中矩形的下面。

Node对象的外观可以通过setStyles方法设置,核心的外观属性有:边框颜色、填充颜色、字体颜色、字体(大小、加粗等CSS Font支持的都可以)、圆角。

    var stage = new jtopo.Stage();var layer = new jtopo.Layer(“layer-1);stage.addChild(layer); // 放入Stagevar node = new jtopo.Node(“Node-1);layer.addChild(node); // 放入Layerstage.show(); // 显示出来

连线对象(Link)

用户操作的核心两个对象之一。

Link给人的形象是连线,有起始点和结束点,一般用来表示关系、流向等。

可以指定一个文本字符串,默认显示在连线的中间。

Link对象的外观可以通过setStyles方法设置,核心的外观属性有:颜色、线条粗细、字体颜色、字体(大小、加粗等CSS Font支持的都可以)。

    var link = new jtopo.Link('Link',fromNode,toNode);layer.addChild(link);

外观样式(Style)

var stage = new jtopo.Stage('divId');
var layer = new jtopo.Layer('default');
stage.addChild(layer);// 全局样式
layer.setStyles({// 字体,格式CSS-FONT'font': 'bold 12px 仿宋'
});var circleNode = new jtopo.CircleNode('选中样式', 400, 200, 60);// 节点样式
circleNode.setStyles({// 画笔颜色(即边框)'strokeStyle': 'red',// 画笔粗细'lineWidth': 9,// 填充颜色'fillStyle': 'orange',// 字体颜色'fontColor': 'black',// 节点中间'textPosition': 'center',// 左右居中'textAlign': 'center',// 上下居中'textBaseline': 'middle'
});// 被选中的状态样式
// 选中的样式会在绘制图元的形状之前被应用
circleNode.selectedStyle = new jtopo.Style({// 阴影颜色'shadowColor': 'orange',// 阴影的模糊级数'shadowBlur': 7,// 阴影的偏移(这里3和3表示右下方向了)'shadowOffsetX' : 3,'shadowOffsetY' : 3,// 甚至可以改变字体'font': 'bold 18px 仿宋'
});layer.addChild(circleNode);stage.show();

事件处理(鼠标交互)

jtopo封装了鼠标行为,可以在Node或者Link对象上增加事件监听,代码示例:

var stage = new jtopo.Stage('divId');
var layer = new jtopo.Layer('default');
stage.addChild(layer);var fromNode = new jtopo.Node('From', 200, 150, 40, 40);
fromNode.setImage('./demo/img/laptop.png', true);
layer.addChild(fromNode);// 鼠标点击
fromNode.on('click', function(event) {fromNode.text = 'click';console.log('click');
});// 鼠标双击
fromNode.on('dblclick', function(event) {console.log('dblclick');fromNode.text = 'dblclick';
});// 鼠标进入
fromNode.on('mouseenter', function(event) {console.log('mouseenter');fromNode.text = 'mouseenter';
});// 鼠标移动
fromNode.on('mousemove', function(event) {console.log('mousemove');fromNode.text = 'mousemove';
});// 鼠标离开
fromNode.on('mouseout', function(event) {fromNode.text = 'mouseout';console.log('mouseout');
});// 鼠标按下
fromNode.on('mousedown', function(event) {console.log('mousedown');fromNode.text = 'mousedown';
});// 鼠标松开
fromNode.on('mouseup', function(event) {console.log('mouseup');fromNode.text = 'mouseup';  
});// 鼠标拖拽
fromNode.on('mousedrag', function(event) {console.log('mousedrag');fromNode.text = 'mousedrag';
});stage.show();

ole.log(‘mouseup’);
fromNode.text = ‘mouseup’;
});

// 鼠标拖拽
fromNode.on(‘mousedrag’, function(event) {
console.log(‘mousedrag’);
fromNode.text = ‘mousedrag’;
});

stage.show();



http://chatgpt.dhexx.cn/article/hI0m0pwM.shtml

相关文章

windows10下安装MSYS2+MinGW64

1.下载msys2,官方地址:http://www.msys2.org/,这里选择64位的安装器 2.安装完成之后,先别启动msys2,在 安装根目录/etc/pacman.d/ 下找到mirrorlist.mingw32、mirrorlist.mingw64和mirrorlist.msys并进行修改。 mirr…

Win10 下安装 MSYS2

什么是 MSYS2 MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX 兼容性层) 和 MinGW-w64(从"MinGW-生成")基础上…

【msys2】使用msys2下载工具的旧版本

背景 苯人在计组实验中使用了msys2来安装verilator工具,结果最新版本的verilator有bug,几经探索找到了利用msys2下载旧版本工具的方法(还可以将现有工具更新为旧版本) 步骤 现以安装旧版本的verilator为例讲解方法。 这是msys…

【Window环境下使用MSYS2搭建CMake + MinGW环境】

目录标题 安装CMakecmake 测试 MSYS2下载MSYS2安装MSYS2修改软件下载源 MSYS2下安装MinGW配置MinGW配置到环境变量 hello world测试 安装CMake Cmake下载地址:https://cmake.org/download/,下一个windows压缩包就好了,因为我比较喜欢自己来配置,免得不知…

用MSYS2安装mingw

文章目录 前言卸载mingw安装MSYS2 前言 安装MSYS2的原因是,在windows安装protobuf时,想用mingw编译protobuf的库,而protobuf的官方手册只给出一句: To build from source using Cygwin or MinGW, follow the Unix installation i…

【VSCode】【msys2】VS Code + msys2配置Windows下C/C++开发环境

【VSCode】【msys2】VS Code msys2配置Windows下C/C开发环境 一、Msys2配置 1. 下载msys2, 网址:https://www.msys2.org/ 2. 安装msys2-x86_64-xxxx.exe 这里没什难度,记住安装路径就好,一路next就装好了。 3. 安装gcc 3.1. 更新msys2…

Msys2记录

MSYS2 ​ MSYS2是MSYS的升级版,集成了pacman和Mingw-w64的Cygwin升级版,提供了Mingw-w64的GNU工具,包括GCC,同时移植了Arch Linux的软件包管理系统pacman,具备了Cygwin的POSIX API,理论上在Linux上的程序使…

msys2在windows10系统的安装

测试系统: windows 10 首先需要msys2的安装包,可以去官网下载安装包 官网地址: http://www.msys2.org/ 本次下载的是 msys2-x86_64-20180531.exe 注意:1.msys2不可以安装在FAT*分区    2.msys2不能安装在win XP系统上 1.双击msys2-x86_64-20180531.exe,并点击下一步选择安…

MSYS2使用教程——win10系统64位安装msys2最新版(msys2-x86_xxxx.exe)

一、安装 测试系统: windows 10 首先需要msys2的安装包,可以去官网下载安装包 官网地址: http://www.msys2.org/ 本次下载的是 msys2-x86_64-latest.exe 注意: 1. msys2不可以安装在FAT*分区 2. msys2不能安装在win XP系统上 指定好安装路径(一般D根目录即可&#…

初步使用MSYS2

在此镜像站点下载, https://mirror.tuna.tsinghua.edu.cn/help/msys2/ 根据资料, MSYS2 (Minimal SYStem 2) 是一个MSYS的独立改写版本,主要用于 shell 命令行开发环境。同时它也是一个在Cygwin (POSIX …

超详细教程:windows安装MSYS2(mingw gcc)——更新于2021.11

目录 安装 MSYS2官网:https://www.msys2.org/ 安装 下载安装程序(官网首页有):msys2-x86_64-20210725.exe 或 CSDN:https://download.csdn.net/download/ymzhu385/45988277运行安装程序。MSYS2 需要 64 位 Windows 7…

Argparse 教程

官方文档 argparse --- 命令行选项、参数和子命令解析器 — Python 3.10.2 文档 别人的笔记Argparse 教程 — Python 3.10.2 文档https://docs.python.org/zh-cn/3/howto/argparse.html#id1完整的argparse的API argparse --- 命令行选项、参数和子命令解析器 — Python 3.8…

python argparse

argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。 使用argparse从命令行传入参…

python argparse type_python argparse详解

1.argparse模块作用 用于解析命令行参数 2.位置参数和可选参数 运行以下代码: import argparse parser = argparse.ArgumentParser() args = parser.parse_args() 运行结果: 参数为-h或--help时,parser.parse_args()会输出命令行的位置参数position arguments和可选参数opti…

Python3中使用argparse模块解析命令行参数

argparse是Python的一个标准模块,用于解析命令行参数,即解析sys.argv中定义的参数。实现在:https://github.com/python/cpython/blob/main/Lib/argparse.py argparse模块还会自动生成帮助和使用信息,即在最后加-h或--help。当用户…

argparse教程

argparse教程 argparse是用来干什么的?位置参数和可选参数测试argparse的功能test1test2test3test4test5-可选参数test6-action选项test7-短选项test8-同时使用位置参数和可选参数test9test10-限定参数的取值范围test11-action"count"test12-None无法和in…

argparse 模块详解

文章目录 1. argparse 模块简介2. 未使用argparse示例3. 使用argparse示例3.1 argparse简单示例3.2 argparse进阶示例3.2.1 可选参数设置3.2.2 可选参数引用名3.2.3 清除帮助中的参数名信息3.2.4 必选参数设置3.2.5 列表参数(多参数)传入设置3.2.6 互斥参…

python中的argparse基本用法

1、argparse是一个python模块,用途是:命令行选项、参数和子命令的解释。 2、使用步骤: 导入argparse模块,并创建解释器添加所需参数解析参数 3、用法示例: import argparse# 1.创建解释器 parser argparse.Argume…

argparse简介

一、argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块,argparse 模块可以让人轻松编写用户友好的命令行接口,能够帮助程序员为模型定义参数。 argparse定义四个步骤 导入argparse包 ——import argparse创建一个命令行解析…

绕过tp路由器管理密码_TP LINK路由器的登陆网址是什么?

旧版本的TP-Link路由器的登陆网址是:192.168.1.1;新版本的TP-Link路由器的登陆网址是:http://tplogin.cn;TP-Link迷你路由器的登陆网址是:192.168.1.253。接下来详细介绍: 一、旧版本的TP-Link路由器的登陆…