`
xhload3d
  • 浏览: 208356 次
社区版块
存档分类
最新评论

HT For Web 拓扑图背景设置

阅读更多

HT For Web 的HTML5拓扑图组件graphView背景设置有多种途径可选择:

  1. divBackground:通过css设置graphView对应的div背景
  2. Painter:通过graphView.addBottomPainter(function(g, rect){…})来绘制背景
  3. Layer:通过设置graphView.setLayer(['…', '…', '…', …])来将graphView拆分为多个图层,并为各个图层命名,再让不同种类的node通过node.setLayer('…')将node设置到graphView对应图层中

接下来我为大家一一介绍graphView背景设置方法:

  1. divBackground:

 

 

 

      这两张图片展示的是设置graphView对应div的background属性来设置拓扑图背景,左边的图片展示的是页面初始效果,右边展示的是拓扑图通过缩小和拖拽图元位置后的效果,从效果上可以看出,拓扑图的背景的位置和大小并没有发生改变,不过图元如何缩放和移动,都保持原来的样子。

      以下是具体的代码实现,代码很简单,通过gv.getView()来获取graphView拓扑图组件对应的div,再向div中设置background属性。

 

function initGV1(gv){
    var dm = gv.dm(),
        node = new ht.Node(),
        view = gv.getView(),
        viewStyle = view.style;
    node.setImage('res/mac-air.png');
    node.setName('13-inch MacBook Air');
    node.setPosition(260, 70);
    dm.add(node);
viewStyle.backgroundImage = 'url(res/background.jpg)';
    viewStyle.backgroundPosition = 'center';
    viewStyle.backgroundRepeat = 'no-repeat';
}

 

 

  1. Painter:



 

 

      这两张图片展示的是通过graphView.addBottomPainter(function(g, rect){...})方法绘制拓扑图组件背景,通过graphView.addTopPainter(function(f, rect){...})方法来绘制拓扑图组件的水印效果,左边的图片展示的是页面初始效果,右边展示的是拓扑图通过缩小和拖拽图元位置后的效果,从效果上可以看出,拓扑图的背景和水印的位置和大小均发生了改变,都跟随拓扑图的缩放和移动而改变。

      细心的读者会发现两张图片的水印时间是不一样的,这个水印获取的是系统当前时间,因此每一秒会刷新一次,所以两张图片的时间会不一样,这说明了graphView拓扑图组件是支持背景和水印刷新的。

      具体的代码实现也不是很复杂,addBottomPainter和addTopPainter方法的参数都是一个函数实现,函数参数也都为两个,g和rect,其中g为canvas对应的画笔,rect为脏区域大小,通过画笔g可以想拓扑图上话任意想描绘的图形,包括图片、渐变色、多边形等等。在代码中addBottomPainter画的就是灰白相间的背景图片,addTopPainter绘制的是系统当前时间,最后通过定时器setInterval设置1秒刷新一次graphView拓扑图组件。

 

function initGV2(gv){
    var dm = gv.dm(),
        node = new ht.Node();
    node = new ht.Node();
    node.setName('13-inch MacBook Air');
    node.setImage('res/mac-air.png');
    node.setPosition(260, 70);
    node.setRotation(Math.PI/2);
    dm.add(node);
gv.addBottomPainter(function(g, rect){
        for(var i=0; i<20; i++){
            for(var j=0; j<10; j++){
                if((i + j)%2 === 0){
                    g.fillStyle = 'lightgray';
                }else{
                    g.fillStyle = 'white';
                }
                g.beginPath();
                g.rect(i*50, j*50, 50, 50);
                g.fill();
            }
        }
        g.strokeStyle = 'red';
        g.lineWidth = 1;
        g.beginPath();
        g.rect(rect.x, rect.y, rect.width, rect.height);
    });
gv.addTopPainter(function(g, rect){
        g.save();
        g.beginPath();
        var text = new Date().toLocaleString();
        g.font = '40px Arial';
        g.strokeStyle = 'red';
        g.textAlign = 'left';
        g.textBaseline = 'top';
        g.lineWidth = 5;
        g.fillStyle = 'yellow';
        g.strokeText(text, 100, 100);
        g.fillText(text, 100, 100);
        g.fill();
        g.restore();
    });
setInterval(function(){
        gv.redraw();
    }, 1000);
}

  

 

  1. Layer:



 

  

      这两张图片展示的是通过graphView.setLayer(['…', '…', '…', …])方法将拓扑图组件分割成'bgLayer', 'edgeLayer', 'nodeLayer'三层,左边的图片展示的是页面初始效果,右边展示的是拓扑图通过缩小和拖拽图元位置后的效果,从效果上可以看出,拓扑图的背景和图元的位置和大小均发生了改变,都跟随拓扑图的缩放和移动而改变。

      具体的代码实现也不是很复杂,通过graphView.setLayer(['…', '…', '…', …])方法将拓扑图组件分割成'bgLayer', 'edgeLayer', 'nodeLayer'三层,并且图层依据数组顺序自下而上,创建一个存放背景图片的bgNode,并设置其属性为不可选中,设置其graphView图层为'bgLayer',再通过重载ht.Default.handleImageLoaded方法,在图片加载完成后设置bgNode的position,最后设置一堆的node节点在nodeLayer图层上,一堆的edge连线在edgeLayer图层上。

 

function initGV3(gv){
    gv.setLayers(['bgLayer', 'edgeLayer', 'nodeLayer']);
var center = createNode(),
        dm = gv.dm(),
        sm = dm.sm(),
        bgNode  = new ht.Node();
center.setPosition(100, 100);
    dm.add(center);
bgNode.s({
        '2d.selectable': false
    });
    bgNode.setImage('bgImage');
    bgNode.setLayer('bgLayer');
ht.Default.handleImageLoaded = function(name, image){
        var width = image.width,
            height = image.height,
            gvH = gv.getHeight(),
            gvW = gv.getWidth();
        if(name == 'bgImage'){
            bgNode.setPosition(gvW / 2, gvH / 2);
        }
    };
    dm.add(bgNode);
var count = 30,
        firstNode,
        lastNode;
for (var i = 0; i < count; i++) {
        var node = createNode();
        if(!lastNode){
            firstNode = node;
        }else{
            node.setHost(lastNode);
        }
        lastNode = node;
node.setPosition(
            500 + 150 * Math.cos(Math.PI * 2 / count * i),
            100 + 70 * Math.sin(Math.PI * 2 / count * i)
        );
        dm.add(node);
        var edge = new ht.Edge(center, node);
        edge.s({
            'edge.type': 'custom',
            'edge.color': 'lightgray',
            'edge.width': 1
        });
        edge.setLayer('edgeLayer');
        edge.addStyleIcon("toArrow", {
            position: 19,
            keepOrien: true,
            width: 30,
            height: 15,
            names: ['toArrow']
        });
        dm.add(edge);
    }
    firstNode.setHost(lastNode);
}

 

  • 大小: 141.2 KB
  • 大小: 133.9 KB
  • 大小: 28.5 KB
  • 大小: 14.8 KB
  • 大小: 140.6 KB
  • 大小: 258.4 KB
1
1
分享到:
评论

相关推荐

    HT for Web Demo

    1. **htForWeb3D.html**:这个HTML文件是整个3D可视化的入口点。它会包含必要的HTML结构,以及引入HT for Web库和其他相关JavaScript、CSS资源。HTML文件中通常会有创建图形实例、设置数据模型、定义交互行为等代码...

    HT for Web 入门手册

    HT for Web是基于HTML5标准的企业应用图形界面一站式解决方案, 其包含通用组件、拓扑组件和3D渲染引擎等丰富的图形界面开发类库,提供了完全基于HTML5的矢量编辑器、拓扑编辑器及 3D场景编辑器等多套可视化设计工具...

    hightopo HT for Web(hightopo.zip)

    3. **图形渲染**:HT for Web采用了高性能的SVG和HTML5 Canvas技术进行图形渲染,能够快速绘制复杂的图表和交互式拓扑图,适合用于数据可视化、流程图、网络拓扑等场景。 4. **数据驱动**:HT for Web基于数据驱动...

    ht-for-web

    【ht-for-web】是一款专为前端开发者设计的框架,主要用于创建和管理拓扑图以及页面布局。这个框架的强大之处在于它的灵活性和可定制性,使得开发者可以轻松地构建出复杂且交互性强的可视化应用。 在拓扑图制作方面...

    HT for Web列表和3D拓扑组件的拖拽应用

    NULL 博文链接:https://xhload3d.iteye.com/blog/2226706

    HT for Web - Box2d

    一直在找苦苦寻找一个Box2D的物理引擎javascript整合例子,发现 http://www.hightopo.com/blog/275.html 这篇文章的例子效果非常棒,通过HT for Web的3D引擎直观的呈现Box2D物理碰撞的实时运行效果,这么强大的3D...

    HT for Web 3d引擎示例加api说明文档

    HT for Web,通常简称为 HT,这是一个基于 JavaScript 开发的 WebGL 引擎。可用于 2D/3D 可视化开发,其核心文件只有一个,就是 ”ht.js”。在 index.html 中使用 script 标签进入后便可使用。 完全版本效果:...

    HT for Web基础动画介绍

    【标题】"HT for Web基础动画介绍"涉及的是在Web开发中使用HT(Hightopo)框架进行动画制作的相关知识。HT for Web是一款基于HTML5的2D/3D图形和交互开发工具,广泛应用于数据可视化、模拟仿真、工业互联网等领域。...

    基于HT for Web矢量实现HTML5上传文件进度条

    HT for Web支持矢量图形,这意味着它可以绘制出清晰、高分辨率的图形,无论屏幕分辨率如何,都能保持良好的显示效果。 在HTML5中,`&lt;input type="file"&gt;`元素提供了一个简单的文件选择对话框,允许用户选择一个或多...

    基于HT for Web矢量实现HTML5文件上传进度条

    HT for Web是一款强大的Web可视化工具,它允许开发者通过矢量图形来构建交互式的Web应用程序。在HTML5中,File API提供了处理文件和数据的能力,包括读取本地文件、监控文件上传进度等功能。 这篇博客(博文链接:...

    HT FOR WEB 自定义图标菜单

    HT FOR WEB 一套强大的基于 WebGL 技术的 3D 图形引擎,编辑器下,左边菜单可自定义控制多个不同的菜单操作。

    html5绘图工具 基于 HTML5 的 Canvas 技术,拓扑图是电力

    在电力和电信行业中,拓扑图是一种常见的方式,用于表示设备、网络和系统的连接关系,有助于理解和分析复杂系统的工作原理。 基于 HTML5 的 Canvas 技术,我们可以开发出专门用于绘制拓扑图的工具。这些工具通常...

    基于 HTML5 快速构建拓扑图1

    Web Storage 可以快速存取小量数据,而 IndexedDB 则适合存储结构化的大数据,可以实现拓扑图的离线浏览和快速检索。 此外,HT 提供了一系列预定义的图形组件和交互模式,如节点、连接线、拖放、缩放和平移等,...

    纯HTML5拓扑图编辑器源代码

    屌爆的纯HTML5拓扑图编辑器源代码,找了很久终于申请到,运行就是这个效果 http://www.hightopo.com/blog/wp-content/uploads/2014/08/Screen-Shot-2014-08-12-at-8.57.11-PM.png 可参考这篇博客 ...

    快速开发基于 HTML5 网络拓扑图应用--入门篇(四)

    上回我们用 ht.widget....HT for Web 提供了工具条组件类 ht.widget.Toolbar,工具条上的元素可为原生的 html 元素, 也支持 ht 提供的如 ht-form.js 的表单插件中的组件,并内置提供了按钮、单选按钮、复选框等组件。

    hightopo-master

    1. **跨平台兼容性**:HT for Web基于Web标准,可以在各种浏览器和操作系统上运行,包括Windows、Mac、Linux,以及iOS和Android等移动设备,确保了应用的广泛适用性。 2. **丰富的图形组件**:Hightopo Master提供...

    ht6023&ht7038电源板原理图,ht6872电路图,PDF

    本文将深入探讨"ht6023&ht7038电源板原理图,ht6872电路图,PDF"中涉及的关键元器件和电路设计,以及与"att7022 pdf schematic"相关的知识点。 首先,HT6023和HT7038是集成电路(IC),通常用于电源管理。HT6023是一...

    HT6015 HT7038三相方案原理图

    ### HT6015 HT7038 三相方案原理图分析 #### 概述 根据提供的信息,“HT6015 HT7038 三相方案原理图”主要涉及HT7038芯片及其相关的电路设计,用于实现某种特定的功能。HT7038是一种高性能的微控制器,广泛应用于...

Global site tag (gtag.js) - Google Analytics