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实现刮刮卡效果实例的更多相关文章
- 经典!HTML5 Canvas 模拟可撕裂布料效果
这是一个模拟可撕裂布料效果的 HTML5 Canvas 应用演示,效果逼真.你会看到,借助 Canvas 的强大绘图和动画功能,只需很少的代码就能实现让您屏息凝神的效果. 温馨提示:为保证最佳的效果, ...
- HTML5 Canvas实战之刮奖效果
近年来由于移动设备对HTML5的较好支持,经常有活动用刮奖的效果,最近也在看H5方面的内容,就自己实现了一个,现分享出来跟大家交流. 1.效果 2.原理 原理很简单,就是在刮奖区添加两个canvas, ...
- 用HTML5 Canvas 做擦除及扩散效果
2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...
- [ html canvas 模仿支付宝刮刮卡效果 ] canvas绘图属性 模仿支付宝刮刮卡效果实例演示
<!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...
- HTML5 Canvas实战之刮奖效果【转】
开源项目地址:https://github.com/artwl/Lottery 作者博客地址:http://www.cnblogs.com/jscode/p/3580878.html 谢谢浏览!
- HTML5 Canvas实现黑客帝国文字掉落效果
效果: 原理: 用canvas逐行输出文字,然后让背景颜色逐渐加深,再随机中断某些列. 代码: HTML: <canvas id="c"></canvas> ...
- html5 canvas 一个漫天飞雪的效果
很棒的下雪效果 代码奉上 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- 基于 HTML5 Canvas 的 3D 热力云图效果
前言 数据蕴藏价值,但数据的价值需要用 IT 技术去发现.探索,可视化可以帮助人更好的去分析数据,信息的质量很大程度上依赖于其呈现方式.在数据分析上,热力图无疑是一种很好的方式.在很多行业中都有着广泛 ...
- HTML5 Canvas 填充与描边(Fill And Stroke)
HTML5 Canvas 填充与描边(Fill And Stroke) 演示HTML5 Canvas Fill 与Stroke文字效果,基于Canvas如何实 现纹理填充与描边. 一:颜色填充与描边 ...
随机推荐
- Seven Steps to Success Machine Learning in Practice
Seven Steps to Success Machine Learning in Practice Project failures in IT are all too common. The r ...
- Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())
在Qt中设置widget背景颜色或者图片方法很多种:重写paintEvent() , 调色板QPalette , 样式表setStyleSheet等等. 但是各种方法都有其注意事项,如果不注意则很容易 ...
- SQLite: sqlite_master
SQLite数据库中一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有表的索引.每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的 ...
- 【POJ】2886 Who Gets the Most Candies?
移动题目相当麻烦. #include <stdio.h> #include <string.h> #define MAXN 500005 #define lson l, mid ...
- nbtstat Linux版源码, 通过IP获取主机名
nbtstat Linux版, 通过IP获取主机名/* NETBIOS name lookup tool - by eSDee of Netric (www.netric.org) * yeh.. i ...
- Chrome测试网站加载时间与流量消耗
加载10M内容,耗时近10秒钟 大概页面图片下载时,同时进行了,有的大图,下载要几秒钟
- BZOJ1602: [Usaco2008 Oct]牧场行走
1602: [Usaco2008 Oct]牧场行走 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1084 Solved: 556[Submit][St ...
- Node.js权威指南 (9) - 进程与子进程
9.1 Node.js中的进程 / 225 9.1.1 进程对象的属性 / 225 9.1.2 进程对象的方法与事件 / 2279.2 创建多进程应用程序 / 235 9.2.1 使用spawn方法开 ...
- MIPI D-PHY 简写收集
Acronyms APPI Abstracted PHY-Protocol InterfaceBER Bit Error Rate 417 CILControl ...
- Error: rpmdb open failed
yumrpmdb: Thread/process 17132/140266190264064 failed: Thread died in Berkeley DB l ...