亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > HTML5 > 正文

基于HTML5 Canvas的3D動態Chart圖表的示例

2024-09-05 07:22:11
字體:
來源:轉載
供稿:網友

發現現在工業SCADA上或者電信網管方面用圖表的特別多,雖然絕大部分人在圖表制作方面用的是echarts,他確實好用,但是有些時候我們不能調用別的插件,這個時候就得自己寫這些美麗的圖表了,然而圖表輕易做不成美麗的。。??吹接幸粋€網站上在賣的圖表,感覺挺好看的,就用 HT for Web 3D 做了一個小例子,挺簡單的,也挺好看的,哈哈~

動態效果圖如下:

這個例子用 HT 實現真的很容易,首先創建一個 HT 中最基礎的 dm 數據模型,然后將數據模型添加進 g3d 3d 組件中,再設置 3d 中的視角并把 3d 組件添加進 body 元素中:

dm = new ht.DataModel();g3d = new ht.graph3d.Graph3dView(dm);g3d.setEye(0, 185, 300);g3d.addToDOM();g3d.getView().style.background = '#000';

接著就是造這五個chart圖表條了,我的思路是這樣的,里層有一個節點,外層一個透明的節點,底部一個 3d 的文字顯示當前的百分比。

里層的節點非常容易,我直接用的 HT 封裝的 ht.Node 創建了一個新的節點對象,然后通過 node.s 方法來設置 node 節點的樣式:

var node = new ht.Node();node.s({    'shape3d': cylinderModel,    'shape3d.color': color,    '3d.movable': false});node.a({    'myHeight': s3[1],});node.p3([p3[0], s3[1]/2, p3[2]]);node.s3(s3);dm.add(node);

其中要說明的是,'shape3d':cylinderModel 這個樣式的設置,首先,shape3d 屬性指定顯示為 3d 模型的圖標效果,cylinderModel 是用 HT 自定義的一個 3d 模型,可參考 HT for Web 建模手冊:

cylinderModel = ht.Default.createCylinderModel(1000, 0, 1000, false, false, true, true);

然后設置了一個動態變化的屬性 myHeight,在 HT 中,node.a 方法是預留給用戶存儲業務數據的,我們可以在這邊添加任意多個屬性。

接下來我們要創建的是外部的透明節點,這個節點的構造方式基本上與內部節點相同,就是多了一點“透明”的樣式設置:

var cNode = new ht.Node();cNode.s({    'shape3d': cylinderModel,    'shape3d.transparent': true,    'shape3d.opacity': 0.2,        'label.color': '#fff',    '3d.movable': false});cNode.p3([p3[0], 50, p3[2]]);cNode.s3(20, 100, 20);dm.add(cNode);

要先設置 ‘shape3d.transparent’ 為true,再設置 ‘shape3d.opacity’ 透明度。

最后是 3d 文字,呈現 3d 文字需要一個 json 格式的 typeface 字體,然后通過 ht.Default.loadFontFace 來加載 json 格式的字體到內存中,詳情請參考 HT for Web 3D 手冊:

ht.Default.loadFontFace('./wenquanyi.json', function(){    //......    var text = new ht.Node();    text.s3([5, 5, 5]);    text.p3(cNode.p3()[0]-5, -10, 0);    dm.add(text);    text.s({        'shape3d' : 'text',    'shape3d.text': node.a('myHeight')+'%',    'shape3d.text.curveSegments': 1,    '3d.movable': false    });});

因為我們用的 typeface 字體的繪制方式是無數個三角形構成的一個字,會占用很大的內存,所以我把圖形的曲線的精細度調得較低,但是還是很清晰,如果你們能找到性能更好的字體,可以使用并且告知我一下,我們目前沒找到占用內存小的字體。

最后,要動態的變化 chart 圖表中的柱形圖,我們得設置動畫,并且將 3d 字體也同步更新數值:

setInterval(function(){    if(node.a('myHeight') < 100){        node.a('myHeight', (node.getAttr('myHeight')+1));    node.s3(20, node.a('myHeight'), 20);    node.p3(p3[0], node.a('myHeight')/2, p3[2]);    }else{        node.a('myHeight', 0);    node.s3([20, 0, 20]);    node.p3([p3[0], 0, p3[2]]);    }    if (text) text.s('shape3d.text', node.a('myHeight')+'%');}, 100);

這里,我自定義的屬性 “myHeight” 就起到了決定性的作用,我用這個屬性來存儲變量,而且可以任意更改變量的值,這樣就能實現動態綁定的效果了。

還有不懂的可以留言,或者直接去我們官網上查看手冊 HT for Web,有更多你想不到的效果能快速實現哦~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
538国产精品一区二区免费视频| 欧美精品久久久久久久久| 日韩精品在线观看视频| 隔壁老王国产在线精品| 欧美激情在线观看视频| 亚洲一区二区三区香蕉| 国产成人免费91av在线| 国产成人亚洲综合91| 欧美国产日韩一区| 欧美成人精品一区| 伊人久久久久久久久久久| 欧美一级片久久久久久久| 欧美精品videosex性欧美| 亚洲国产免费av| 日韩电影中文字幕| 久久精品91久久香蕉加勒比| 欧美日韩中国免费专区在线看| 亚洲国产另类久久精品| 国产免费观看久久黄| 88国产精品欧美一区二区三区| 色小说视频一区| 日韩视频欧美视频| 在线观看国产精品91| 亚洲人成在线观看网站高清| 久久久97精品| 成人黄色在线观看| 亚洲女同性videos| 国产精自产拍久久久久久蜜| 国产91色在线| 国产精品一二三视频| 国产噜噜噜噜噜久久久久久久久| 亚洲国产精品系列| 国产精品久久久久久久久久久久| 欧美日韩国产限制| 亚洲欧美制服中文字幕| 亚洲欧美在线播放| 欧美一区二粉嫩精品国产一线天| 欧美日韩激情小视频| 亚洲网站在线观看| 亚洲一区二区三区毛片| 国产精品久久久久99| 亚洲欧美国产另类| 韩国v欧美v日本v亚洲| 欧美精品videosex牲欧美| 国产视频在线观看一区二区| 亚洲精品日韩激情在线电影| 欧美国产精品人人做人人爱| 亚洲护士老师的毛茸茸最新章节| 亚洲资源在线看| 亚洲国产成人精品久久| 免费av一区二区| 日本一区二区在线免费播放| 精品久久久久久中文字幕大豆网| 欧美激情三级免费| 亚洲免费精彩视频| 91在线中文字幕| 国产精品流白浆视频| 亚洲精品资源美女情侣酒店| 欧美日韩中文字幕在线视频| 国产精品视频永久免费播放| 亚洲在线一区二区| 国自产精品手机在线观看视频| 亚洲欧美中文日韩在线| 成人a在线视频| 欧美猛男性生活免费| 日韩中文字幕av| 国产成人精品在线播放| 91精品国产91久久久久久| 欲色天天网综合久久| 一区二区三区高清国产| 91日本在线视频| 亚洲视频在线观看免费| 69影院欧美专区视频| 国产欧美日韩91| 亚洲色图日韩av| 国产精品旅馆在线| 久热精品视频在线观看一区| 亚洲的天堂在线中文字幕| 91成品人片a无限观看| 亚洲一区中文字幕| www国产精品视频| 中文字幕日韩在线视频| 色综合久综合久久综合久鬼88| 精品久久久一区| 揄拍成人国产精品视频| 日韩成人免费视频| 一区二区三区无码高清视频| 欧美激情欧美狂野欧美精品| 国产欧美最新羞羞视频在线观看| 精品欧美一区二区三区| 欧美激情a∨在线视频播放| 亚洲人免费视频| 日韩精品中文字| 日韩一区视频在线| 亚洲国产成人精品女人久久久| 九九久久久久久久久激情| 中文字幕欧美精品在线| 欧美电影免费观看| 国产亚洲视频中文字幕视频| 色樱桃影院亚洲精品影院| 欧美一级电影免费在线观看| 欧美日韩激情网| 日本午夜在线亚洲.国产| 国产91久久婷婷一区二区| 亚洲国产精品成人va在线观看| 九九综合九九综合| 色久欧美在线视频观看| 亚洲天堂av在线免费| 欧美在线欧美在线| 欧美电影在线观看完整版| 日本久久久久久久久久久| 九九热最新视频//这里只有精品| 久久精视频免费在线久久完整在线看| 奇门遁甲1982国语版免费观看高清| 国产高清在线不卡| 亚洲白虎美女被爆操| 国产精品一区二区三区在线播放| 亚洲精品日韩久久久| 国产成人精品在线视频| 久久九九全国免费精品观看| 成人疯狂猛交xxx| 亚洲成人激情在线观看| 亚洲va久久久噜噜噜| 久久影院中文字幕| 久久影视电视剧凤归四时歌| 一区二区三区天堂av| 亚洲精品久久在线| 国产精品自产拍在线观看| 亚洲片在线资源| 成人黄色免费网站在线观看| 欧美日韩成人网| 亚洲视频视频在线| 国产午夜精品免费一区二区三区| 中日韩美女免费视频网站在线观看| 久久久久国产精品免费网站| 亚洲精品乱码久久久久久金桔影视| 国产精品手机播放| 欧美性猛交xxxx乱大交蜜桃| 欧美一级淫片aaaaaaa视频| 日韩精品久久久久久福利| 国产视频在线一区二区| 久久综合伊人77777| 亚洲第一天堂av| 色yeye香蕉凹凸一区二区av| 九九热精品视频| 亚洲影院在线看| 51久久精品夜色国产麻豆| 欧美激情精品久久久久久变态| 国产精品亚洲一区二区三区| 国产精品亚洲美女av网站| 亚洲裸体xxxx| 亚洲天堂开心观看| 日韩三级成人av网| 国产午夜精品麻豆| 亚洲色图在线观看| 国产精品久久久久久久美男| 欧美成人高清视频| 国产一区二区三区在线观看网站| 国内精品中文字幕| 亚洲精品中文字| 国产亚洲精品高潮| 欧美国产高跟鞋裸体秀xxxhd| 久久久久久噜噜噜久久久精品| 这里只有视频精品|