麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > HTML > 正文

基于HTML5的WebGL實現json和echarts圖表展現在同一個界面

2024-08-26 00:20:04
字體:
來源:轉載
供稿:網友

突然有個想法,如果能把一些用到不同的知識點放到同一個界面上,并且放到一個盒子里,這樣我如果要看什么東西就可以很直接顯示出來,而且這個盒子一定要能打開。我用HT實現了我的想法,代碼一百多行,這么少的代碼能實現這種效果我覺得還是牛的。

先來看看效果圖:

echarts,json,html5,webgl

這個例子最基礎的就是最外層的盒子了,所以我們先來看看如何實現它:

 var box = new ht.CSGBox(); dataModel.add(box);

用HT可以很輕易地實現這個盒子,在HT中封裝了很多基礎圖元類型,我們經常用到的ht.Node也是其中一個,這樣我們可以不用反復地寫相同的代碼來完成基礎的實現。

這個例子中用的封裝好的基礎圖元是ht.CSGBox,一個盒子模型,可以參考HT for Web 建模手冊,我們在手冊中可以看到,在CSGBox中我們只能操作這個盒子的各個面,如果你想要自己設置一些特殊的功能,只需要操作ht.Style(HT for Web 風格手冊)即可。

要想實現在盒子上的一個面上添加貼圖,我能想到的只有HT封裝的ht.Default.setImage函數了。

這邊我實現的方法是參考HT的editor來運作的,重新聲明一個graphview組件和一個datamodel數據模型,然后通過ht.Default.xhrLoad方法調用json,在方法中用ht.Default.parse將text轉成json格式,然后反序列化將json里面的內容展現成可視化的界面,再設置動畫,再立即刷新用到這個json的界面,否則就算設置了動畫,畫面也不會改變。

ht.Default.xhrLoad('displays/demo/pump.json', function(text){    const json = ht.Default.parse(text);    pumpDM.deserialize(json);    var currentRotation = 0;    var lastTime = new Date().getTime();    setInterval(function(){        var time = new Date().getTime();        var deltaTime = time - lastTime;        currentRotation += deltaTime * Math.PI / 180 * 0.3;        lastTime = time;        pumpDM.getDataByTag('fan1').setRotation(currentRotation);        pumpDM.getDataByTag('fan2').setRotation(currentRotation);        box.iv();        // g3d.iv();這邊也可以刷新g3d,但是局部刷新更省        pumpGV.validateImpl();    }, 10);}, 10);

這個時候我不能把pumpGV和g3d都加到底層div上,并且我的意圖是把pumpGV加到g3d中的CSGBox中的一面上,所以為了讓pumpGV顯示出來 必須設置pumpGV的寬高,而這個寬高必須比我json畫出來的圖占的面積要大,不然顯示不完整。如果想看這個寬高對顯示的影響,可以自己改改看來玩玩。

 pumpGV.getWidth = function() { return 600;} pumpGV.getHeight = function(){ return 600;} pumpGV.getCanvas().dynamic = true;//設置這個是為了讓canvas能動態顯示

echarts圖表的顯示也是很基礎的,只要再加上 canvas.dynamic = true,并且實時刷新gv即可。

最后,只需要將這兩個回傳的canvas傳入ht.Default.setImage中即可:

 ht.Default.setImage('echart', charts(option)); ht.Default.setImage('pump', pumpGV.getCanvas());

ht.Default.drawImage函數生成新的圖實際上就是在canvas上畫圖,所以我們只要把我們已經畫好的canvas傳到ht.Default.setImage就可以生成圖片了。

有一點需要改進的,我們可以看到盒子上的線段,圖形,文字周邊都有一圈的鋸齒,因為我們在設置字體時,同時設置了半透明,在處于半透明的情況下“blend”樣式會被關閉,這個時候我們就沒法控制樣式了,一般有透明度的時候需要將“all.transparent”設置為true,

我們可以設置需要顯示的面的transparent: true即可。看下完成后的效果圖:

echarts,json,html5,webgl

總結

以上所述是小編給大家介紹的基于HTML5的WebGL實現json和echarts圖表展現在同一個界面,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人免费高清激情视频 | 亚洲一级片免费观看 | 草久在线| 毛片大全在线观看 | 欧美日韩在线看片 | 久草手机在线观看视频 | 黄色网欧美 | 7777欧美| 久久看免费视频 | 久久草在线视频 | 久久久久久久99 | 香蕉成人在线视频 | 国产资源在线观看 | 成人免费看视频 | 久久久中精品2020中文 | 羞羞视频在线免费 | 国产精品自拍99 | 成人毛片100免费观看 | 精品一区二区久久久久久久网精 | 久久精品站 | 国产免费一区二区三区视频 | 一级做a爱片性色毛片 | 色中色在线播放 | 久久午夜免费视频 | 久久国产精品久久久久久 | 国产精品剧情一区二区在线观看 | 91精品国产综合久久久欧美 | 手机在线看片国产 | 久久久久中精品中文字幕19 | 日韩av电影免费在线观看 | 欧美日韩大片在线观看 | 欧美精品久久久久久久久久 | 黄色一级片免费在线观看 | 亚洲第一成人在线 | 欧美一级黄色免费 | 国产免费观看视频 | 黄色网战入口 | 国产成人网 | 久久免费综合视频 | 欧美第1页 | 一级在线观看视频 |