实现这个功能很easy,仅仅须要重写moveCells方法就能够了。以下是源文件里的代码:

mxGraph.prototype.moveCells = function(cells, dx, dy, clone, target, evt) {if (cells != null && (dx != 0 || dy != 0 || clone || target != null)) {this.model.beginUpdate();try {if (clone) {cells = this.cloneCells(cells, this.isCloneInvalidEdges());if (target == null) {target = this.getDefaultParent();}}this.cellsMoved(cells, dx, dy, !clone && this.isDisconnectOnMove() && this.isAllowDanglingEdges(), target == null);if (target != null) {var index = this.model.getChildCount(target);this.cellsAdded(cells, target, index, null, null, true);}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS, 'cells', cells, 'dx', dx, 'dy', dy, 'clone', clone, 'target', target, 'event', evt));} finally {this.model.endUpdate();}}return cells;
};

接下来要对这种方法进行改造。加一句就能够了

mxGraph.prototype.moveCells = function(cells, dx, dy, clone, target, evt) {clone=evt.ctrlKey;//对。就是这啦!

if (cells != null && (dx != 0 || dy != 0 || clone || target != null)) { this.model.beginUpdate(); try { if (clone) { cells = this.cloneCells(cells, this.isCloneInvalidEdges()); if (target == null) { target = this.getDefaultParent(); } } this.cellsMoved(cells, dx, dy, !clone && this.isDisconnectOnMove() && this.isAllowDanglingEdges(), target == null); if (target != null) { var index = this.model.getChildCount(target); this.cellsAdded(cells, target, index, null, null, true); } this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS, 'cells', cells, 'dx', dx, 'dy', dy, 'clone', clone, 'target', target, 'event', evt)); } finally { this.model.endUpdate(); } } return cells; };

是的。实现这个功能的确非常easy。可是往往实际项目中会有不同的需求。比方一个数据库关系图,复制一个字段到还有一张表中的时候;选择了多个图形而且包含关系线的是时候是否须要复制关系;假设图形存在子图形。是否须要一同复制;当前选择的图形是不是同意移动/复制。移动进入目标图形,目标图形是否同意该操作等等,这些就须要在这种方法区域中进行复杂的推断。

mxGraph实现按住ctrl键盘拖动图形实现复制图形功能相关推荐

  1. 鼠标控制程序,按住shift显示S,按住Ctrl显示C,按键盘显示D,松开键盘显示U

    鼠标控制程序,按住shift显示S,按住Ctrl显示C,按键盘显示D,松开键盘显示U` package p1; import java.awt.BorderLayout; import java.aw ...

  2. qq语音按住ctrl就静音怎么解决_excel图形处理技巧:怎么制作出地摊经济的街景...

    编按:哈喽,大家好!近期,地摊经济大热,不禁让人感慨.写教程如摆摊,而Excel图形技巧则是Excel教程中看似不起眼的地摊货,甚至有人直言这些技巧不值一提.小花不以为然,今日就以轻松愉快的方式,摆摊 ...

  3. 按住 ctrl 并滚动鼠标滚轮才可缩放地图_ZBrush自定义缩放快捷键

    ZBrush默认的缩放方式简直反人类--按住Alt,拖动鼠标(此时可以移动视角),再松开Alt,继续拖动鼠标,才能进行视角缩放.(设计者鼠标滚轮坏了?) 一开始我以为这是没法修改的,网上也没找到方法, ...

  4. windows系统里懒人的福音,如何实现不按住ctrl实现文件多选

    作为一个老程序猿,我经常在编程时手上夹着一支点燃的香烟. 为了避免烟灰撒上我那昂贵的键盘里,我很多时候都是单手操作.但是在工作中需要按住ctrl键不放实现某些item多选时,单手就显得不太方便. 幸运 ...

  5. 按住ctrl键多选_解决烦恼:按住Ctrl键单击选择时,阻止Windows意外复制文件

    按住ctrl键多选 Have you ever tried to select a bunch of files in Windows Explorer while holding down the ...

  6. visio如何扩大画布的大小. 鼠标移到画布的边界按住Ctrl,就可以拉大

    visio如何扩大画布的大小. 鼠标移到画布的边界按住Ctrl,就可以拉大.txt 你可以另存为---图片就可以了. 点击文件---另存为---保存类型---JPEG---保存---就可以了.

  7. 按住 ctrl 并滚动鼠标滚轮才可缩放地图_Firefox 73 将引入全局缩放功能,在所有网站都可适用...

    Firefox 好久都没有用过了,刚刚无意中刷到又有新版本更新了(Firefox 73),好像很厉害的样子分享给大家. Firefox 用户可能很快就能在浏览器中为所有网站设置全局缩放级别.目前,用户 ...

  8. [Selenium]如何通过Selenium实现Ctrl+click,即按住Ctrl的同时进行单击操作

    在自动化测试的过程中,经常会出现这样的场景: 按住Ctrl的同时,进行单击操作,已达到多选的目的 Actions a = new Actions(driver); a.keyDown(Keys.CON ...

  9. DOS死机客星,能打破程序死循环,按住Ctrl +Esc即可使死掉的程序立即返回到Dos Shell

    //--DOS死机客星,能打破程序死循环,按住Ctrl +Esc即可使死掉的程序立即返回到Dos Shell code segment assume cs:code,ds:code org 100h ...

最新文章

  1. 教你打包Java程序,jar转exe随处可跑
  2. mysql排序1 10 11_MySQL中的排序
  3. linux内核3.4基于wakeup_source的autosleep机制分析
  4. DVRRDK, EZSDK和DVSDK这三者有什么区别
  5. 看完这篇文章保你面试稳操胜券——基础篇(html/css)
  6. 前端学习(1856)vue之电商管理系统电商系统之安装mysql出现mysql报错:Can’t start server: Bind on TCP/IP port: 通常每个套接字地址(协议/网络地址
  7. 本机获取Intel AMT IP地址的例子
  8. 如何在PHP开启gzip页面压缩实例
  9. 【CCF】201612-1中间数
  10. matlab矩阵中的 *、/、\、.*
  11. TensorFlow 保存和加载模型
  12. 基于tensorflow 1.x 的bert系列预训练模型工具
  13. java两种绑定方式_java两种单例模式用法分析
  14. JS base64 加密和 后台 base64解密(防止中文乱码)
  15. 解决VMware虚拟机桥接模式无法上网的解决方法 ubuntu
  16. Julia:Plots 包的属性汇总
  17. windows10 DOS命令 小计
  18. Centos7.2安装搜狗拼音
  19. python 抓包秒杀_Python 爬虫,推荐一款简单的抓包工具(续)
  20. 传智播客黑马Java学习笔记_day08_2

热门文章

  1. cad转shp 奥维_CAD转换工具程序包(附下载)
  2. python processpoolexector 释放内存_使用Python的multiprocessing.pool,内存使用量不断增长...
  3. java中hashcode作用_Java中hashCode的作用
  4. (六) shiro在web中自定义Realm
  5. springboot整合shiro地址栏JSESSIONID问题
  6. 【slighttpd】基于lighttpd架构的Server项目实战(7)—http-parser
  7. React学习:ref调用、组件封装调用-学习笔记
  8. 平面上有两个圆相交,求两个圆相交部分的面积
  9. Scrapy:Python的爬虫框架----原理介绍
  10. storm UI解释