HTML5 Canvas实现刮刮卡效果实例
HTML:
<style> #canvas { border: 1px solid blue; position: absolute; left: 10px; top: 10px; background:url(../Images/1.jpg) no-repeat center center; background-size:contain; } </style> <canvas id="canvas"></canvas>
一、解决方案1是使用clearRect清空鼠标位置的像素
var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); ctx.fillStyle = 'gray'; ctx.rect(0, 0, canvas.width, canvas.height); ctx.fill(); //解决方案1是使用clearRect清空鼠标位置的像素 var isClear = false; //设置清空部分 canvas.onmousedown = function (ev) { isClear = true; } canvas.onmouseup = function () { isClear = false; } canvas.onmousemove = function (ev) { if (isClear == false) return; ev = ev || window.event; //清空像素,根据当前所在点 var curX = ev.clientX - canvas.offsetLeft; var curY = ev.clientY - canvas.offsetTop; var step = 20; ctx.clearRect(curX - step / 2, curY - step / 2, step, step); ev.stopPropagation(); }
二、解决方案2是使用globalCompositeOperation,重叠处理,重叠的透明处理
var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d'); ctx.fillStyle = 'gray'; ctx.rect(0, 0, canvas.width, canvas.height); ctx.fill(); //解决方案2是使用globalCompositeOperation,重叠处理 //优点使用 fill() 不限制是否是矩形 //在与源不重叠的区域上保留目标。其他部分都变成透明的。 ctx.globalCompositeOperation = 'destination-out'; var isClear = false; //设置清空部分 canvas.onmousedown = function (ev) { isClear = true; } canvas.onmouseup = function () { isClear = false; } canvas.onmousemove = function (ev) { if (isClear == false) return; ev = ev || window.event; //清空像素,根据当前所在点 var curX = ev.clientX - canvas.offsetLeft; var curY = ev.clientY - canvas.offsetTop; var step = 10; ctx.beginPath(); ctx.arc(curX, curY, step, 0, Math.PI * 2, false); ctx.fill(); ev.stopPropagation(); }
分类:
HTML5-Canvas
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2014-09-22 滚动条相关1
2014-09-22 javascript 获取滚动条高度+常用js页面宽度与高度(转)