<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>qdabc.cn</title> <style> canvas{ border: 1px solid #000; display: block; margin: 0 auto; background-size: 300px 200px; } </style> </head> <body> <canvas id="canvas" width="300" height="200"></canvas> </body> <script> var canvas = document.getElementById( 'canvas' ), ctx = canvas.getContext( '2d' ); var w = canvas.width, h = canvas.height; /*随机生成奖品*/ var awards = [ '美女一只', 'sorry 很遗憾。再接再厉', '抓住一只单身狗', '滚去敲代码', 'sorry 很遗憾。再接再厉', '美女一只', '抓住一只单身狗', '滚去敲代码', '抓住一只单身狗', 'sorry 很遗憾。再接再厉', '抓住一只单身狗' ]; /*随机生成一个索引*/ var award=awards[Math.floor(Math.random()*awards.length)]; /*将奖品信息绘制在canvas*/ ctx.font='bold 32px sans-serif'; ctx.textAlign='center'; ctx.textBaseline='middle'; ctx.fillText(award,w/2,h/2); /*然后将奖品信息装换成canvas的背景图 1为最高质量*/ var dataurl=canvas.toDataURL('image/png',1); canvas.style.background='url('+dataurl+')'; ctx.clearRect(0,0,w,h); /*定义canvas蒙版*/ ctx.fillStyle='#ddd'; ctx.fillRect(0,0,w,h); var flag=false; /*鼠标按下事件*/ canvas.addEventListener('mousedown',function(){ flag=true; /*涂抹去蒙版*/ ctx.globalCompositeOperation='destination-out'; }) /*鼠标移动事件*/ canvas.addEventListener('mousemove',function(e){ if(flag){ var x= e.clientX-canvas.offsetLeft; var y= e.clientY-canvas.offsetTop; ctx.beginPath(); ctx.fillRect(x,y,30,30); ctx.fill(); } }) /*鼠标提起事件*/ canvas.addEventListener('mouseup',function(){ flag=false; ctx.globalCompositeOperation='source-over'; }) </script> </html>
欢迎分享本文,转载请保留出处:前端ABC » canvas实现刮刮乐效果