×

php绘制拓扑图

php绘制拓扑图(php绘制图形)

admin admin 发表于2023-04-04 00:43:08 浏览40 评论0

抢沙发发表评论

本文目录一览:

如何使用HTML5 Canvas动态的绘制拓扑图

使用HTML5 Canvas动态的绘制拓扑图:

HTML5中引入新的元素canvas,其drawImage 方法允许在 canvas 中插入其他图像( img 和 canvas 元素) 。drawImage函数有三种函数原型:

语法:

drawImage(image, dx, dy)

drawImage(image, dx, dy, dw, dh)

drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh)

*第一个参数image可以用HTMLImageElement,HTMLCanvasElement或者HTMLVideoElement作为参数。

*dx、dy是image在canvas中定位的坐标值;

*dw、dh是image在canvas中即将绘制区域(相对dx和dy坐标的偏移量)的宽度和高度值;

*sx、sy是image所要绘制的起始位置;

*sw、sh是image所要绘制区域(相对image的sx和sy坐标的偏移量)的宽度和高度值。

举例:

!DOCTYPE html

html

body

p要使用的图像:/p

img id="tulip" src="/i/eg_tulip.jpg" alt="The Tulip" /

p画布:/p

canvas id="myCanvas" width="500" height="300" style="border:1px solid #d3d3d3;background:#ffffff;"

Your browser does not support the HTML5 canvas tag.

/canvas

script

var c=document.getElementById("myCanvas");

var ctx=c.getContext("2d");

var img=document.getElementById("tulip");

ctx.drawImage(img,10,10);

/script

/body

/html

告诉你漂亮标准的网络拓扑图是怎么画出来的?

绘制网络拓扑图是网络工程中必不可少的步骤,对于网络工程师到底怎么把拓扑图画好还真的是个技术活,但是熟能生巧我就给大家介绍一下绘制流程,供大家参考。绘制流程采用了红茶三杯的流程,我在此谢谢他能给我们提供如此好的干货。大家可以关注一下他的微博“红茶三杯”。-php绘制拓扑图

一、网络拓扑的“主要”绘制工具

1、Powerpoint

适合中小型网络拓扑绘制;小巧方便,扩展性强,实用性强

适合讲演及方案演示、实施方案、实施报告等交付材料

使用范围较广

2、Visio

适合大型拓扑绘制;工业标准

功能强大、信息容量强大

便于打印、喷绘

二、不同网络环境的拓扑图案例

1、典型的园区网拓扑

2、典型的金融行业拓扑

3、工程环境测试拓扑

三、拓扑绘制步骤(建议)

1、首先在纸上花个草稿,熟练之后,做到拓扑在心中

2、通过辅助手段描绘拓扑框架,利用好线条和框架色块(可根据业务逻辑模块)

3、放置网络设备图标

4、标记信息元素

5、完善外围元素

6、完成整体绘制

四、绘制实例流程

首先看一下我们要绘制的实例拓扑图,如下图:

步骤1、用辅助线描述主要框架

步骤2、填充主干线路

步骤3、去掉辅助线

步骤4、放置主干网络设备

步骤5、添加信息点元素

步骤6、完成网络拓扑图

以上所谓步骤,只是提供一个拓扑绘制的大致思路,并非所有的拓扑都需要照搬照抄上述步骤来完成,有些拓扑异常复杂,更非简单几步就能完成。根据物理网络环境,结合客户业务逻辑结构,最终落地成逻辑的网络拓扑图,其实体现的是工程师对客户网络环境、网络需求、网络协议等的综合理解-php绘制拓扑图

怎么使用jointjs 在php项目中绘制拓扑图

最近有一个需求是根据数据自动在前端页面画出一个流程导向图,简单说就是把数据以A节点指向B节点,B节点指向C节点这种形式给你,然后让页面自己在一定区域内渲染出一个流程图.当然节点上可能还有其他信息,这个暂时不考虑,就是这样一个需求,最后是借助一个工具完成的.先说一下处理过程:-php绘制拓扑图

  可以说这个问题一开始我走了弯路,想的不是那么清楚,一开始想的是自己画.低端的就是用html+css各种布局,画出方块和线条,至于箭头什么的再想办法.后来一想这样太低端了,应该专业一点,就打算用canvas或者svg.因为之前用过echarts前端的图标库,知道它底层有个依赖库zrender就是专门弄canvas的,所以好一阵看,感觉还靠谱,能画出来.-php绘制拓扑图

  

  这样虽然能画出来,不过接下来我们就要考虑更多的问题,首先什么时候折行,然后遇到分支的种种情况怎么处理.最后我查资料竟然开始涉及一些图论的东西了,深刻感觉到东西好像变复杂了,我的目的不是研究理论,而是为了一个实现.-php绘制拓扑图

  这时候转变一下思路,有没有什么工具能专门做这样的工作,类似于jQuery大家都用它操作DOM,RequireJS都用它来实现模块化加载.那应该也有类似的东西,集成了数学上的图论,自动布局等.这就不得不说Github火的一塌糊涂是有原因的,我搜了很多中文网站以及百度都没什么结果(不知道是不是关键字有问题),总之没搜到能用的东西.但是在Github上找到了一个开源项目:dagre-d3.-php绘制拓扑图

  看名字就能猜到它是基于D3库的,D3是一个专门用于前端图形绘制的库,dagre-d3就是实现自动布局并且绘制流程图的这么一个东西.

Dagre is a JavaScript library that makes it easy to lay out directed graphs on the client-side. The dagre-d3 library acts a front-end to dagre, providing actual rendering using D3.-php绘制拓扑图

  上一个简单的Demo:

// Create a new directed graph

var g = new dagreD3.Digraph();

// Add nodes to the graph. The first argument is the node id. The second is

// metadata about the node. In this case we're going to add labels to each of

// our nodes.

g.addNode("kspacey",    { label: "Kevin Spacey" });

g.addNode("swilliams",  { label: "Saul Williams" });

g.addNode("bpitt",      { label: "Brad Pitt" });

g.addNode("hford",      { label: "Harrison Ford" });

g.addNode("lwilson",    { label: "Luke Wilson" });

g.addNode("kbacon",     { label: "Kevin Bacon" });

// Add edges to the graph. The first argument is the edge id. Here we use null

// to indicate that an arbitrary edge id can be assigned automatically. The

// second argument is the source of the edge. The third argument is the target

// of the edge. The last argument is the edge metadata.

g.addEdge(null, "kspacey",   "swilliams", { label: "K-PAX" });

g.addEdge(null, "swilliams", "kbacon",    { label: "These Vagabond Shoes" });

g.addEdge(null, "bpitt",     "kbacon",    { label: "Sleepers" });

g.addEdge(null, "hford",     "lwilson",   { label: "Anchorman 2" });

g.addEdge(null, "lwilson",   "kbacon",    { label: "Telling Lies in America" });

  它渲染出来是这样的:

  这样我们只要把数据处理成对应格式,就可以轻松的自动绘制会流程图.比较给力的是它对数据的支持良好,有多个格式可以选择,而且虽然接口不多,但是对于节点以及线条的操作都有,可以很轻松的改变节点以及线条的样式,这个大家可以看官方的demo.-php绘制拓扑图

  另外如果要附加交互事件,可以通过jquery实现,也很容易,我使用bootstrap的tooltip很轻松的就加上去了.感觉还是个很给力的库,而且国内这方面资料感觉不多