您现在的位置是:网站首页> 编程资料编程资料
基于HTML5 Canvas的3D动态Chart图表的示例html5中canvas图表实现柱状图的示例canvas如何绘制钟表的方法
2021-08-29
1413人已围观
简介 这篇文章主要介绍了基于HTML5 Canvas的3D动态Chart图表的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
发现现在工业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,有更多你想不到的效果能快速实现哦~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
相关内容
- HTML5移动端手机网站开发流程HTML5播放实现rtmp流直播html5用video标签流式加载的实现基于 HTML5 WebGL 实现的医疗物流系统Html5 实现微信分享及自定义内容的流程HTML5 canvas 瀑布流文字效果的示例代码HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影HTML5梦幻之旅——炫丽的流星雨效果实现过程HTML5 离线应用之打造零请求、无流量网站的解决方法Html5之webcoekt播放JPEG图片流
- 基于html5绘制圆形多角图案html5实现的鼠标悬停显示气泡文字框提示效果源码html5需遵循的6个设计原则HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果HTML5标签嵌套规则详解【必看】HTML 5.1来了 9月份正式发布 更新内容预览HTML5本地数据库基础操作详解HTML5移动端手机网站开发流程js+html5制作简易的时钟表效果源码HTML5+SVG制作电子鼓打击音乐特效源码HTML5+Canvas实现可视化mp3音乐播放器特效源码
- 如何利用input事件来监听移动端的输入HTML5移动端开发中的Viewport标签及相关CSS用法解析整理HTML5移动端开发的常用触摸事件html5 canvas实现的酷炫页面预加载动画图标效果源码HTML5+jQuery实现mobile(手机端)流量统计图表特效源码(环形)HTML5 canvas实现文字雨特效源码html5基于canvas实现的中国地图各省坐标指向北京效果源码html5 canvas实现掉落的雨点动画效果源码HTML5+CSS3图片堆叠转瀑布流布局特效源码
- HTML5移动端开发中的Viewport标签及相关CSS用法解析移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法 HTML5移动端手机网站开发流程整理HTML5移动端开发的常用触摸事件HTML5移动端开发遇见的东西
- 整理HTML5移动端开发的常用触摸事件html5触摸事件判断滑动方向的实现HTML5触摸事件实现移动端简易进度条的实现方法HTML5触摸事件演化tap事件介绍HTML5触摸事件(touchstart、touchmove和touchend)的实现
- 让IE下支持Html5的placeholder属性的插件HTML5 placeholder属性详解ie placeholder属性的兼容性问题解决方法HTML 5 input placeholder 属性如何完美兼任ieHTML5 placeholder(空白提示)属性介绍限制html文本框input只能输入数字和小数点使一个input文本框随其中内容而变化长度的方法使用placeholder属性设置input文本框的提示信息
- html5摇一摇代码优化包括DeviceMotionEvent等等HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例Html5+JS实现手机摇一摇功能html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等用HTML5实现手机摇一摇的功能的教程基于html5 DeviceOrientation 实现微信摇一摇功能
- Html5 FileReader实现即时上传图片功能实例代码HTML5 文件域+FileReader 分段读取文件并上传到服务器HTML5中FileReader接口使用方法实例详解浅谈HTML5 FileReader分布读取文件以及其方法简介
- html5定位获取当前位置并在百度地图上显示HTML5地理定位与第三方工具百度地图的应用html5定位并在百度地图上显示的示例HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
- html5 更新图片颜色示例代码html5实现点击弹出图片功能html5 录制mp3音频支持采样率和比特率设置html5表单的required属性使用html5调用摄像头实例代码HTML5页面音频自动播放的实现方式Html5大屏数据可视化开发的实现html实现弹窗的实例HTML5来实现本地文件读取和写入的实现方法HTML 罗盘式时钟的实现HTML5简单实现添加背景音乐的几种方法
