draw.io二次开发(4)事件捕获

news2025/2/27 8:26:21

本篇阐述对drawio中如何捕获并处理事件。
在这里插入图片描述

绘制一个曲线箭头,可以看到上图中红框部分1.可以通过下拉框选择箭头的起止端形状,2.可以通过复选框选择是否产生草稿线条,3.可以双击曲线添加文字。

1. 起止端形状选择下拉框

在grapheditor/Format.js文件大约第5178行lineStart,以及大约第5244行lineEnd。以lineEnd为例,不想要的全部注释掉就行了。我只保留了开放箭头。

var lineEnd = this.editorUi.toolbar.addMenuFunctionInContainer(stylePanel2, 'geSprite-endclassic', mxResources.get('lineend'), false, mxUtils.bind(this, function(menu)
{
	...
	if (ss.style.shape == 'connector' || ss.style.shape == 'filledEdge' || ss.style.shape == 'wire')
	{
		// Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_CLASSIC, 1], null, null, false, Format.classicFilledMarkerImage.src), 'scaleX(-1)');
		// Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_CLASSIC_THIN, 1], null, null, false, Format.classicThinFilledMarkerImage.src), 'scaleX(-1)');
		Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OPEN, 0], null, null, false, Format.openFilledMarkerImage.src), 'scaleX(-1)');
		// Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], [mxConstants.ARROW_OPEN_THIN, 0], null, null, false, Format.openThinFilledMarkerImage.src), 'scaleX(-1)');
		//Format.processMenuIcon(this.editorUi.menus.edgeStyleChange(menu, '', [mxConstants.STYLE_ENDARROW, 'endFill'], ['openAsync', 0], null, null, false, Format.openAsyncFilledMarkerImage.src), 'scaleX(-1)');
		...
	}
	...
}

同时,为了使得将曲线尾端形状从默认的经典箭头改为开放箭头,可以在SideBar-EventGraph.js(这是我的自定义面板,详见前一篇 传送门)中进行修改,如下图。
在这里插入图片描述

2. 草稿线条复选框

事件监听器设置在grapheditor/Format.js文件大约第5830行:

var listener = mxUtils.bind(this, function(sender, evt, force)
{
	...
	addOption(mxResources.get('sketch'), 'sketch', 0, function(cells, enabled)
	{
		...
		alert("sketch");
		...
	}
}

这样,每当点击复选框时,就会弹出alert信息,接下来就可以按照自己的设计进行翻修改了。

3. 双击曲线编辑文字

在grapheditor/graph.js文件中大约9932行,addText函数。

Graph.prototype.addText = function(x, y, state)
{
	alert('addText');
	...
}

在grapheditor/graph.js文件中大约9847行,在函数insertTextForEvent中被调用。

alert("invoke addText");
cell = this.addText(pt.x, pt.y, state);

这样,每当双击绘制好的曲线时,就会弹出alert信息,接下来就可以按照自己的设计进行翻修改了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/520557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安立Anritsu MS2711E,MS2712E 手持频谱分析仪

Anritsu安立MS2712E MS2711E频谱分析仪 特征: 9 kHz 至 4 GHz 测量:占用带宽、信道功率、ACPR、C/I、频谱发射模板、场强 干扰分析仪:频谱图、信号强度、RSSI、信号 ID、干扰映射 跟踪发生器,也用作 CW 源 覆盖图&#xff1a…

Request 和 Response详解

1.Request和Response的概述 # 重点 1. service方法的两个参数request和response是由tomcat创建的2. request 表示请求数据, tomcat将浏览器发送过来的请求数据解析并封装到request对象中servlet开发者可以通过request对象获得请求数据 3. response 表示响应数据,服务器发送给浏…

科罗拉多州立大学发布 CSU-MLP 模型,用随机森林算法预测中期恶劣天气

: By 超神经 内容一览:近期,来自美国科罗拉多州立大学与 SPC 的相关学者联合发布了一个基于随机森林的机器学习模型 CSU-MLP,该模型能够对中期 (4-8天) 范围内恶劣天气进行准确预报。目前该成果刊已发表在《Weather and Forecasti…

收藏!16款ChatGPT工具

一、ChatGPT for google 一个浏览器插件,可搭配现有的搜索引擎来使用。 最大化搜索效率,对搜索体验的提升相当离谱: 安装完插件后,在搜索引擎搜索任何问题,都能获取两份答案。 左边是谷歌抓取的全网资源&#xff0c…

PoseiSwap:合规、隐私与支持更广泛的资产

Nautilus Chain 代表了公链赛道发展的一个新的范式形态,作为目前行业内首个 Layer3 链,是目前行业内第一个并行化且运行速度最快的EVM Rollup 方案。作为首个模块化链,存储、计算、共识等都在不同的模块中,意味着其能够获得更高的…

QML渐变(Gradients)

目录 一 QML介绍 二 QML的使用场合 三 实例演示 一 QML介绍 QML是Qt Quick的缩写,它是一种新型的、面向对象的、跨平台的脚本语言,可以用来描述用户界面或应用程序的交互逻辑。QML可以在Qt应用程序中使用,也可以在其他JavaScript应用程序中…

IM即时通讯系统[SpringBoot+Netty]——梳理(一)

文章目录 一、为什么要自研一套即时通讯系统1、实现一个即时通讯系统有哪些方式1.1、使用开源产品做二次开发或直接使用1.2、使用付费的云服务商1.3、自研 2、如何自研一套即时通讯系统2.1、早期即时通讯系统是如何实现2.2、一套即时通讯系统的基本组成2.3、当下的即时通讯系统…

Prometheus监控指标查询性能调优

01 背景 在《SRE: Google运维解密》一书中作者指出,监控系统需要能够有效的支持白盒监控和黑盒监控。黑盒监控只在某个问题目前正在发生,并且造成了某个现象时才会发出紧急警报。“白盒监控则大量依赖对系统内部信息的检测,如系统日志、抓取提…

ArcGIS创建渔网Create Fishnet工具生成指定大小格网

本文介绍在ArcMap软件中,通过“Create Fishnet”工具创建渔网,从而获得指定大小的矢量格网数据的方法。 首先,我们在创建渔网前,需要指定渔网覆盖的范围。这里我们就以四川省为例,在这一范围内创建渔网;其中…

prometheus实战之四:alertmanager的部署和配置

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是《prometheus实战》系列的第四篇,在《prometheus实战之三:告警规则》中曾经提到过,整个告警功能分为规则和…

基于AT89C51单片机的并入串出乘法口诀的设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87779146?spm1001.2014.3001.5503 源码获取 并入串出乘法口诀的设计与仿真系统设计 目录 第一章 概述 3 1.1课题研究及意义 3 1.2课题设计内容 4 第二章系统设计…

FE_Vue学习笔记 路由基本使用

1 路由的简介- router 路由【route】就是一组key-value的对应关系。 多个路由,需要经过路由器【router】的管理。 SPA (single page web application)应用 - 单页面web应用【一个index.html】 1)单页Web应用(single page web a…

Linux快照太有趣了!

1.首先介绍一下什么是Linux快照 VMware 的菜单栏中有虚拟机快照这个选项,形象来说快照就相当于一个备份文件,记录的是虚拟机运行到某一节点时的状态,在虚拟机的使用过程中如果发生了意外,比如系统崩溃或系统异常,此时…

python字典(一)——defaultdict的学习

一、前言 本页主要用来记录python字典的一些知识 二、Python中的defaultdict的详解 2.1defaultdict返回的默认值 defaultdict顾名思义默认字典,这个字典属于普通字典的一个子集,是对普通字典的改进 dcit的使用: 当访问字典里面不存在的key时会…

leetcode:相对名次(详解)

前言:内容包括-题目,代码实现,大致思路,代码解读 目录 题目: 代码实现: 大致思路: 代码解读: part 1:开辟返回数组 part 2:score数组的每个元素及其下标…

视觉大模型DINOv2:自我监督学习的新领域

如果你对自监督学习感兴趣,可能听说过Facebook人工智能的DINO(无标签知识蒸馏)。我们在以前的文章中也介绍过它。DINOv2不仅是一个新版本而且带来了新的改进,并为判别性自监督学习设定了更高的标准。当然公司的名字也从Facebook变为了Meta。 本文将介绍…

成功打破 GPT-4 上限,新版 Claude 横空出世!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 前 OpenAI 团队成员在离职后,创办了 Anthropic 公司。今年 3 月份的时候,该公司推出一款名为 Claude 的应用,试图与 ChatGPT 一争高下。 一个多月过去了…

分享Python采集77个css3代码,总有一款适合您

分享Python采集77个css3代码,总有一款适合您 Python采集的77个css3代码下载链接:https://pan.baidu.com/s/13EiUDXOAZvvKmF2KGrivzA?pwdubb2 提取码:ubb2 两款漂亮的bootstrap分页样式 纯CSS3用户卡片设计效果 4种炫酷CSS3 loading预加…

第六十章 Unity 发布Web平台

WebGL 是一种用于在 Web 浏览器中渲染图形的 API,基于 OpenGL ES 图形库的功能。WebGL 1.0 大致与 OpenGL ES 2.0 功能相匹配,而 WebGL 2.0 大致与 OpenGL ES 3.0 功能相匹配。WebGL 构建选项允许 Unity 将内容发布为 JavaScript 程序,而这些…

FastDFS+Nginx - 本地搭建文件服务器同时实现在外远程访问「端口映射」(1)

大家好,我是晓星航。今天为大家带来的是面向对象编程相关的讲解!😀 文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Ngi…