- 浏览: 179294 次
- 性别:
- 来自: 天津
文章分类
最新评论
-
u014133453:
引用引用引用引用引用
activiti 并发任务实例流程图的显示 -
wf213:
您好,我用mxgraph画好图之后存到数据库里面了,但是怎么在 ...
mxgraph 之 让流程图文件(xml格式)以图的方式显示在面板上 -
SYSGIS:
嗯,写的不错,每篇文章的后记写的也不错,哈哈
mxgraph之保存图片 -
goodone:
我想问问,怎么把mxgraph生成xml格式的流程生成图片文件 ...
mxgraph之保存图片 -
ncxujinjun:
楼主的内容很有帮助
mxgraph之保存图片
1、写在前面:关于双边框形状,在mxgraph中有双边框椭圆形(doubleEllipse),我的双边框长方形就是据此拓展的。
2、该形状的用途:这个图形也是很有必要的,它可用在BPMN中的事务子流程。
3、关键拓展代码:
extension.js
4、应用方法:
应用新的样式时可以在default-style.xml中写该样式:
这就是BPMN中事务子流程的样式定义。
然后,在graph的js中:
这样就可以用这个样式啦啦~~
*************************格叽格叽**************************
终于写完了 lysh miss wanan~
2、该形状的用途:这个图形也是很有必要的,它可用在BPMN中的事务子流程。
3、关键拓展代码:
extension.js
/** * 新增表单样式doubleRectangle * **/ function mxDoubleRectangle(bounds, fill, stroke, strokewidth){ this.bounds = bounds; this.fill = fill; this.stroke = stroke; this.strokewidth = (strokewidth != null) ? strokewidth: 1; } mxDoubleRectangle.prototype = new mxShape(); mxDoubleRectangle.prototype.constructor = mxDoubleRectangle; mxDoubleRectangle.prototype.createVml = function() { this.node = document.createElement('v:group'); var name = (this.isRounded) ? 'v:roundrect': 'v:rect'; this.background = document.createElement(name); this.configureVmlShape(this.background); this.node.appendChild(this.background); // this.label = this.background; this.isShadow = false; this.fill = null; this.foreground = document.createElement(name); this.configureVmlShape(this.foreground); this.node.appendChild(this.foreground); this.stroke = null; this.configureVmlShape(this.node); return this.node; }; mxDoubleRectangle.prototype.createSvg = function() { var g = this.createSvgGroup('rect'); this.foreground = document.createElementNS(mxConstants.NS_SVG, 'rect'); this.foreground.setAttribute('shape-rendering', 'optimizeSpeed'); this.foreground.setAttribute('fill', 'none'); g.appendChild(this.foreground); return g; }; mxDoubleRectangle.prototype.redrawSvg = function(node) { if (this.innerNode != null) { this.updateSvgShape(this.innerNode); if (this.shadowNode != null) { this.updateSvgShape(this.shadowNode); } } else { this.updateSvgShape(this.node); } this.updateSvgGlassPane(); this.updateSvgNode(this.foreground, 8); }; mxDoubleRectangle.prototype.redrawVml = function() { this.node.style.visibility = 'hidden'; this.updateVmlShape(this.node); this.updateVmlGlassPane(); this.node.style.visibility = 'hidden'; this.background.style.visibility = 'hidden'; this.updateVmlShape(this.background); this.updateVmlGlassPane(); this.background.style.visibility = 'visible'; this.foreground.style.visibility = 'hidden'; this.updateVmlShape(this.foreground); this.updateVmlGlassPane(); this.foreground.style.visibility = 'visible'; var inset = 8; var w = Math.floor(this.bounds.width); var h = Math.floor(this.bounds.height); var x = Math.floor(this.bounds.x); var y = Math.floor(this.bounds.y); this.background.style.top = inset/2 + 'px'; this.background.style.left = inset/2 + 'px'; this.background.style.width = Math.max(0, w - inset) + 'px'; this.background.style.height = Math.max(0, h - inset) + 'px'; }; mxDoubleRectangle.prototype.updateSvgNode = function(node, inset) { inset = (inset != null) ? inset: 0; if (node != null) { var strokeWidth = Math.max(1, this.strokewidth * this.scale); if (this.crisp) { node.setAttribute('shape-rendering', 'crispEdges'); } else { node.removeAttribute('shape-rendering'); } if (this.style != null && this.style[mxConstants.STYLE_SMOOTH]) { var pts = this.points; var n = pts.length; if (n > 3) { var points = 'M ' + pts[0].x + ' ' + pts[0].y + ' '; points += ' Q ' + pts[1].x + ' ' + pts[1].y + ' ' + ' ' + pts[2].x + ' ' + pts[2].y; for (var i = 3; i < n; i++) { points += ' T ' + pts[i].x + ' ' + pts[i].y; } node.setAttribute('d', points); } } if (this.isDashed) { var phase = Math.max(1, Math.floor(3 * this.scale)); node.setAttribute('stroke-dasharray', phase + ',' + phase); } if (this.isRounded) { var w = this.bounds.width-inset; var h = this.bounds.height-inset; var r = Math.min(w * mxConstants.RECTANGLE_ROUNDING_FACTOR, h * mxConstants.RECTANGLE_ROUNDING_FACTOR); node.setAttribute('rx', r); node.setAttribute('ry', r); } node.setAttribute('stroke',this.stroke); node.setAttribute('stroke-width', strokeWidth); node.setAttribute('x', this.bounds.x +inset/2); node.setAttribute('y', this.bounds.y +inset/2); node.setAttribute('width', Math.max(0, this.bounds.width - inset)); node.setAttribute('height', Math.max(0, this.bounds.height - inset)); } }; mxDoubleRectangle.prototype.configureVmlShape = function(node) { node.style.position = 'absolute'; var color = this.stroke; if (color != null && color != mxConstants.NONE) { node.setAttribute('stroked', 'true'); node.setAttribute('strokecolor', color); } else { node.setAttribute('stroked', 'false'); } color = this.fill; node.style.background = ''; if (color != null && color != mxConstants.NONE) { if (this.fillNode == null) { this.fillNode = document.createElement('v:fill'); node.appendChild(this.fillNode); } this.updateVmlFill(this.fillNode, color, this.gradient, this.gradientDirection, this.opacity); } else { node.setAttribute('filled', 'false'); if (this.points == null) { this.configureTransparentBackground(node); } } if ((this.isDashed || this.opacity != null) && this.strokeNode == null) { this.strokeNode = document.createElement('v:stroke'); node.appendChild(this.strokeNode); } if (this.strokeNode != null) { if (this.strokeNode != null) { if (this.isDashed) { var phase = Math.max(1, Math.floor(3 * this.scale)); var pat = phase + ' ' + phase; if (this.strokeNode.getAttribute('dashstyle') != pat) { this.strokeNode.setAttribute('dashstyle', pat); } } else if (this.strokeNode.getAttribute('dashstyle') != 'solid') { this.strokeNode.setAttribute('dashstyle', 'solid'); } } if (this.opacity != null) { this.strokeNode.setAttribute('opacity', this.opacity + '%'); } } if (this.isShadow && this.fill != null) { if (this.shadowNode == null) { this.shadowNode = document.createElement('v:shadow'); this.shadowNode.setAttribute('on', 'true'); this.shadowNode.setAttribute('color', mxConstants.SHADOWCOLOR); node.appendChild(this.shadowNode); } } if (node.nodeName == 'roundrect') { try { node.setAttribute('arcsize', String(mxConstants.RECTANGLE_ROUNDING_FACTOR * 100) + '%'); } catch(e) {} } this.strokeNode = null; }; /** *拓展该形状输出img的绘制方法 **/ mxImageExport.prototype.initShapes = function() { this.shapes = []; //其他形状的绘制也在此定义,就是源码中的,在此只写了新增的代码 this.shapes['doubleRectangle'] = { drawShape: function(canvas, state, bounds, background) { if (background) { if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { var size = Math.max(bounds.width / 10, bounds.height / 10); canvas.roundrect(bounds.x, bounds.y, bounds.width, bounds.height, size, size); } else { canvas.rect(bounds.x, bounds.y, bounds.width, bounds.height); } return true; } else { canvas.fillAndStroke(); var inset = 8; var x = bounds.x; var y = bounds.y; var w = bounds.width; var h = bounds.height; x += inset/2; y += inset/2; w -= inset; h -= inset; if (w > 0 && h > 0) { if (mxUtils.getValue(state.style, mxConstants.STYLE_ROUNDED, false)) { var size = Math.max(w / 10, h / 10); canvas.rect(x, y, w,h,size,size); }else { canvas.rect(x,y,w,h); } } canvas.stroke(); } } }; };
4、应用方法:
应用新的样式时可以在default-style.xml中写该样式:
<add as="transaction" > <add as="shape" value="doubleRectangle"/> <add as="strokeColor" value="black"/> <add as="fillColor" value="#F2F2F2"/> <add as="gradientColor" value="#F2F2F2"/> <add as="verticalAlign" value="top"/> <add as="rounded" value="0"/> </add>
这就是BPMN中事务子流程的样式定义。
然后,在graph的js中:
graph.cellRenderer.registerShape('doubleRectangle', mxDoubleRectangle); var style = graph.getStylesheet().getDefaultVertexStyle(); style[mxConstants.STYLE_SHAPE] = 'doubleRectangle';
这样就可以用这个样式啦啦~~
*************************格叽格叽**************************
终于写完了 lysh miss wanan~
发表评论
-
camunda对BPMN流程定义解析、执行、展现的JS库
2013-04-12 16:08 109961 写在前面 本文介绍了 ... -
mxgraph 之 节点样式设置
2012-02-01 17:33 41211、如何设节点颜色? 通过属性fillColor(填充色)、g ... -
mxgraph 之 增加对齐标线 等对graph的相关设置
2011-12-02 16:31 2706graph.setConnectable(true); ... -
解决mxgraph导出图片的中文乱码和image节点无法显示的问题
2011-12-02 16:11 43111、写在前面,mxgraph原来它的jar包是有源码的啊,就在 ... -
mxgraph之保存图片
2011-12-02 15:44 78061、写在前端:任何情况下,保存图片不可能只通过前台代码就能实现 ... -
ie浏览器和ff浏览器解析xml文件时的区别
2011-11-15 15:51 1468ie和非ie对xml文档解析不同。 1.ie下new Acti ... -
activiti 并发任务实例流程图的显示
2011-09-22 16:41 57751.写在前面: activiti中并发后的活动任务节点通过ru ... -
activiti 实例流程图的显示方法
2011-09-16 17:31 23039所谓实例流程图的显示,就是显示流程图的同时,高亮显示正在执行的 ... -
Activiti的简单入门
2011-08-22 17:19 6671一、Activiti的实用意义 ...
相关推荐
在IT领域,尤其是在图形界面设计和可视化应用中,mxGraph是一个强大的JavaScript库,用于创建交互式的图表和图形,包括复杂的网络拓扑图。本篇文章将深入探讨如何利用mxGraph实现拓扑图中节点和边框闪烁的效果,以...
mxgraph自定义图元很难调试,这个工具可以通过svg转为xml ,通过微调达到图元定义的目的
mxgraph 是一个强大的JavaScript库,用于创建交互式图形应用程序,如流程图、网络拓扑图等。它提供了丰富的API和功能,使得开发者可以轻松地在Web应用中集成图形编辑功能。在mxgraph中,实现右键菜单和工具条是两个...
mxgraph的API允许开发人员自定义图形样式、形状以及交互行为,满足各种复杂的可视化需求。 **流程建模** 流程建模是业务流程管理的重要组成部分,通过图形化的方式表示工作流程,使得流程更易于理解和改进。基于...
mxGraph还支持自定义形状和渲染,开发者可以通过继承或扩展现有的形状类来创建自己的图形组件。此外,它有强大的事件处理机制,可以监听并响应用户的拖放、点击、移动等操作。 实例方面,mxGraph提供了一系列的示例...
很抱歉,根据您提供的信息,"MXGRAPH"似乎与音乐文件"陈奕迅 - 不要说话.mp3"、"陈奕迅 - 不如这样.mp3"、"陈奕迅 - 不如不见.mp3"并不相关,这看起来更像一个音乐文件的列表而不是IT行业的专业知识点。MXGRAPH通常...
"mxgraph学习笔记" MXGraph是一款基于开源技术的图形化库,提供了丰富的API和工具,帮助开发者快速构建复杂的图形应用。下面是MXGraph学习笔记的知识点总结: 坐标系 MXGraph中的坐标系分为两种:无关位置和相关...
3. **图形样式(Styles)**:mxGraph支持自定义图形样式,包括线条样式、填充颜色、边框样式等,使得图表能呈现各种视觉效果。 4. **图形形状(Shapes)**:mxGraph提供了多种预定义的图形形状,如矩形、椭圆、箭头...
mxGraph最新div.base { position: absolute; overflow: hidden; white-space: nowrap; font-family: Arial; font-size: 8pt; } div.base#graph { border-style: solid; border-color: #F2F2F2; border-...
mxGraph破解版,版本号:2.4.0.4
其中,mxGraph 是一个强大的、可自定义的、用于创建交互式图形应用程序的JavaScript库。本文将深入探讨mxGraph的基本概念、安装、使用方法以及如何通过它进行图形绘制。 **1. mxGraph 概述** mxGraph 是由 JGraph ...
mxgraph-svg2shape 一套将SVG文件转换为mxGraph资源的工具。 该存储库基于: SVG to XML mxGraph stencil definition translation tool. This was created for internal use, so there are lots of things ...
**mxgraph API与Demo详解** mxGraph是一款强大的JavaScript图形库,用于绘制和编辑流程图、组织结构图等复杂图表。它提供了丰富的API,使得开发者能够轻松地在Web应用中实现图形化界面。本文将深入探讨mxGraph API...
3. **图形样式**:mxGraph支持自定义节点和边的样式,包括填充色、边框、字体等。样式可以通过JSON对象定义,并可以动态改变。 4. **布局算法**:内置的布局算法如层次布局、力导向布局等,可以帮助自动调整节点的...
此外,mxGraph支持自定义事件处理、图元风格、图形布局等高级特性。你可以通过添加事件监听器来响应用户交互,如节点的点击、拖拽等。图元风格允许你定义节点和边的外观,而布局算法可以帮助你自动化地组织图形,使...
mxGraph 简单易用,只需要在HTML文件中加入...服务器支持: 尽管mxGraph可以单独使用,我们知道你还是希望在客户端和服务器直接能够非常容易地交换数据。所以,我们也一并提供了服务器端的Java及.Net的支持库。
mxGraph的核心特性包括交互性、自定义节点形状、丰富的API以及对SVG和Canvas的支持。 在JavaScript图形库中,mxGraph脱颖而出,主要得益于以下几点: 1. **易用性**:mxGraph提供了直观的API,使得开发者能够轻松...
- **图形表示**:mxGraph提供了一套完整的图形表示系统,包括各种形状(如框、连接线、箭头等)和样式选项,使得用户可以轻松创建美观的图表。 - **交互性**:该库支持用户对图形的实时编辑,如拖放、连接节点、...
mxGraph是一款强大的JavaScript库,专用于创建交互式和可自定义的图形编辑器,尤其适合构建流程图、网络拓扑图以及UML模型等图表。它提供了丰富的API和功能,使得开发者可以轻松地在Web应用中集成图形编辑功能。 ...