canvas的一些基础分享
来源:互联网 发布:数据切片 编辑:程序博客网 时间:2024/06/02 05:44
第一次发,就不多说了,直接上代码!
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body><canvas id="canvas"> 对不起,你的浏览器不支持,请先升级您的浏览器!</canvas><script> (function () { //获取canvas节点对象 var canvas=document.getElementById("canvas"); canvas.width="600"; canvas.height="600"; canvas.style.border="1px solid"; //获取canvas上下文 var context=canvas.getContext("2d"); /* * 图形数据集 * */ var data = [ { "value": .1, "color": "#ccc", "title": "老总" }{ "value": .2, "color": "red", "title": "高级经理" },{ "value": .3, "color": "blue", "title": "职员1" },{ "value": .4, "color": "green", "title": "职员2" }]; /* * 遍历数据绘制饼状图 * */ var tempAngle=-90; //起始度数 var x0=300,y0=300,r=150; for(var i=0;i<data.length;i++){ var obj=data[i]; //开启新状态 context.beginPath(); //圆心点 context.moveTo(300,300); //设置填充样式 context.fillStyle=obj.color; /* * 绘圆:context.art(x,y,r,startAngle,endAngle,counterclockwise); * */ var currentAngle=obj.value*360; //当前角度 var startAngle=tempAngle*Math.PI/180;//起始角度 var endAngle=(currentAngle+tempAngle)*Math.PI/180; //终点角度 //绘画 context.arc(x0,y0,r,startAngle,endAngle); context.fill(); context.stroke(); /* 绘制文字 text-x=x0+Mathcos(指定的度数)*(半径+突出的长度) text-=y0+Mathsin(指定的度数)*(半径+突出的长度) */ context.beginPath(); var text=obj.value*100+"%占比"; var textAngle=tempAngle+1/2*currentAngle; var x=x0+Math.cos(textAngle*Math.PI/180)*(r+20); var y=y0+Math.sin(textAngle*Math.PI/180)*(r+20); context.font="bold 22px '微软雅黑'"; if(textAngle>90&&tempAngle<270){ context.textAlign="end" } context.fillText(text,x,y); context.fill(); tempAngle+=currentAngle; } })()</script></body></html>
通过JavaScript 来绘制,因为canvas 元素本身是没有绘图能力的。所有绘制的工作必须在JavaScript内部完成。下面是一些canvas的绘制总结:
<script> var c = document.getElementById("canvas"); var context = c.getContext("2d"); /*绘制背景*/ context.fillStyle="#FF0000"; context.fillRect(0,0,150,75); /*绘制三角形*/ context.moveTo(10,10);//开始的启点 context.lineTo(150,50);//启点到该点的直线 context.lineTo(10,50);//上一个点到该点的直线 context.lineTo(10,10);//收尾连接 context.stroke(); /*绘制圆*/ context.fillStyle="#fff000"; context.beginPath(); context.arc(30,30,10,0,Math.PI*2,true); context.closePath(); context.fill(); /*颜色渐变*/ var rbg = context.createLinearGradient(0,80,150,75); rbg.addColorStop(0,"#ff0000"); rbg.addColorStop(1,"#00ff00"); context.fillStyle=rbg; context.fillRect(0,80,150,75); </script>
这里直接汇总在一起了,如下图所示:
阅读全文
0 0
- canvas的一些基础分享
- 学习SEO基础的一些思路分享
- 关于Canvas的一些经验
- HTML5 canvas 的一些属性
- android canvas的一些知识
- 关于Canvas的一些用法
- Canvas画布的一些实用技巧
- Android Canvas的一些问题
- canvas的一些小知识点
- 分享个HTML5 canvas时钟的代码
- 自定义View时,用到Paint Canvas的一些温故,讲讲平时一些效果是怎么画的(基础篇 二,图像遮盖,Canvas静态变化)
- Canvas基础图形的绘制
- QCon的一些分享
- java的一些分享!
- 一些资料的分享
- Android的一些分享
- html5的canvas的一些初学总结
- canvas的一些有用的使用小结
- 第六届福建省大学生程序设计竞赛(几道水题)
- 用MC写一个策略
- ifdef,=,+=:=,?=
- 模板方法模式
- OL4叠加显示天地图地图服务之XYZ实例
- canvas的一些基础分享
- Map中的HashMap集合
- html5知识点:DOM编程
- Android 6.0 7.0及以上 动态权限
- jvm学习记录--09 虚拟机类加载机制
- div模拟textarea实现高度随内容自增长
- SPY++用法
- 关于VC++6.0下出现error C2065: 'LPDIRECTDRAWSURFACE7' : undeclared identifier解决方法
- 摩尔定律还有效吗