HTML的一个Canvas实例 - 热度追踪
2014-11-04 10:37
429 查看
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>html5</title> <style type="text/css"> #heatmap{ background-image:url("bark.jpg"); } </style> <script> var points={}; var scale=3; var x=-1; var y=-1; function loadDemo(){ document.getElementById("resetButton").onclick=reset; canvas=document.getElementById("heatmap"); context=canvas.getContext("2d"); //为canvas设置一个高透明值, context.globalAlpha=0.2; //让新的绘制操作点亮底层的像素而不是替换它们. context.globalCompositeOperation="lighter"; //在鼠标移动的时候或每隔1/10s的时间调用它以改变显示效果. function sample(){ if( x!=-1 ){ addToPoint(x,y); } setTimeout(sample,100); } //鼠标移动时,改变这个像素点的显示效果 canvas.onmousemove=function( e){ x=e.clientX-e.target.offsetLeft; y=e.clientY-e.target.offsetTop; addToPoint(x,y); } sample(); } function reset(){ points={}; context.clearRect(0,0,300,300); //重置canvas空间. x=-1; y=-1; } //获取热点的颜色,由低到高的范围,不同的颜色值会被用来代表不同的热度,intensity值越大,则颜色越亮。 function getColor( intensity){ var colors=["#072933","#2e4045","#8c593b","#b2814e","#fac268","#fad237"]; return colors[Math.floor(intensity/2)]; } //不管什么时候,只要鼠标移过或者悬停在canvas的某个区域,就会有一个点被绘制出来。 //鼠标在特写区域停留时间越长,这个点越大越亮。 function drawPoint(x,y,radius){ context.fillStyle=getColor(radius); radius=Math.sqrt(radius)*6; context.beginPath(); context.arc(x,y,radius,0,Math.PI*2,true); //绘圆 context.closePath(); context.fill(); } //鼠标移动或悬停时都会调用这个函数,canvas特定点上的热度值会升高并保存下来。 最高热度值为10 function addToPoint(x,y){ x=Math.floor(x/scale); y=Math.floor(y/scale); //计算热度值 if( !points[[x,y]] ){ points[[x,y]]=1; }else if( points[[x,y]]==10){ return; }else{ points[[x,y]]++; } drawPoint( x*scale,y*scale,points[[x,y]] ); } //注册窗口加载完毕时的初始化操作 window.addEventListener("load",loadDemo, true); </script> </head> <body> <h1>本案例演示了一个热点图的创建</h1> <canvas id="heatmap" class="clear" style="border:1px solid;" width="300" height="300"> </canvas> <button id="resetButton">Reset</button> </body> </html>
相关文章推荐
- HTML的一个Canvas实例
- 使用html传递参数的一个简单实例
- 用 HTML Canvas 创建一个图片浏览器
- 每天一个JavaScript实例-canvas绘图
- 【实例】使用canvas缓缓加载一个图片到web页面中
- 用Python程序抓取网页的HTML信息的一个小实例
- 一个用基于智能标签的生成HTML实例
- 兄弟连HTML5——09.canvas实例2——太阳系2.html
- 每天一个JavaScript实例-canvas定时器动态的更新一个线条
- 每天一个JavaScript实例-canvas画图
- 每日一个js实例1---纯js与canvas实现心电图网格绘制
- 用 HTML Canvas 创建一个图片浏览器
- HTML Canvas创建一个图片浏览器
- HTML5:用 HTML Canvas 创建一个图片浏览器
- [HTML5-Canvas] HTML 5的<canvas>元素教程和实例
- 用 HTML Canvas 创建一个图片浏览器
- HTML 5的<canvas>元素教程和实例
- 用HTML Canvas创建一个图片浏览器
- HTML Canvas实例 曲线弹跳的小球
- 每日一个js实例15--canvas绘图内容打印