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实现刮刮卡效果实例的更多相关文章

  1. 经典!HTML5 Canvas 模拟可撕裂布料效果

    这是一个模拟可撕裂布料效果的 HTML5 Canvas 应用演示,效果逼真.你会看到,借助 Canvas 的强大绘图和动画功能,只需很少的代码就能实现让您屏息凝神的效果. 温馨提示:为保证最佳的效果, ...

  2. HTML5 Canvas实战之刮奖效果

    近年来由于移动设备对HTML5的较好支持,经常有活动用刮奖的效果,最近也在看H5方面的内容,就自己实现了一个,现分享出来跟大家交流. 1.效果 2.原理 原理很简单,就是在刮奖区添加两个canvas, ...

  3. 用HTML5 Canvas 做擦除及扩散效果

    2013年的时候曾经使用canvas实现了一个擦除效果的需求,即模拟用户在模糊的玻璃上擦除水雾看到清晰景色的交互效果.好在2012年的时候学习HTML5的时候研究过canvas了,所以在比较短的时间内 ...

  4. [ html canvas 模仿支付宝刮刮卡效果 ] canvas绘图属性 模仿支付宝刮刮卡效果实例演示

    <!DOCTYPE html> <html lang='zh-cn'> <head> <title>Insert you title</title ...

  5. HTML5 Canvas实战之刮奖效果【转】

    开源项目地址:https://github.com/artwl/Lottery 作者博客地址:http://www.cnblogs.com/jscode/p/3580878.html 谢谢浏览!

  6. HTML5 Canvas实现黑客帝国文字掉落效果

    效果: 原理: 用canvas逐行输出文字,然后让背景颜色逐渐加深,再随机中断某些列. 代码: HTML: <canvas id="c"></canvas> ...

  7. html5 canvas 一个漫天飞雪的效果

    很棒的下雪效果 代码奉上 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  8. 基于 HTML5 Canvas 的 3D 热力云图效果

    前言 数据蕴藏价值,但数据的价值需要用 IT 技术去发现.探索,可视化可以帮助人更好的去分析数据,信息的质量很大程度上依赖于其呈现方式.在数据分析上,热力图无疑是一种很好的方式.在很多行业中都有着广泛 ...

  9. HTML5 Canvas 填充与描边(Fill And Stroke)

    HTML5 Canvas 填充与描边(Fill And Stroke) 演示HTML5 Canvas Fill 与Stroke文字效果,基于Canvas如何实 现纹理填充与描边. 一:颜色填充与描边 ...

随机推荐

  1. 实现pushViewController:animated:的不同页面转换特效

    1. 首先要明确的是,不使用pushViewController的默认动画,所以在调用这个函数时,要将animated设置为NO.2. 使用普通的来CATransition实现转换效果,代码如下:CA ...

  2. java4中创建内对象的方法

    在java程序中,对象可以被显式地或者隐式地创建.四种显式的创建对象的方式:     ● 用new语句创建对象     ● 运用反射手段,调用java.lang.Class 或者 java.lang. ...

  3. Principles of Motion Sensing

    Principlesof Motion Sensing Various sensors capable of detecting motionin free space have been comme ...

  4. 14.6.3.4 Configuring InnoDB Buffer Pool Prefetching (Read-Ahead) 配置InnoDB Buffer pool 预取

    14.6.3.4 Configuring InnoDB Buffer Pool Prefetching (Read-Ahead) 配置InnoDB Buffer pool 预取 一个预读请求是一个I/ ...

  5. touchend事件的preventDefault阻止掉了click事件

    <div id="box">box</div> <script> var isTouchDevice = function() { return ...

  6. pojo类和vo类分别是什么

    转:http://blog.sina.com.cn/s/blog_4adc4b090101kuks.html vo有两种说法,一个是viewObject,一个是valueObject.. 就拿前者来说 ...

  7. Web Services的相关名词解释:WSDL与SOAP

    在对Web Services进行性能测试时,接触到最多的两个名词就是WSDL和SOAP.利用LoadRunner对Web Services进行调用的时候,也存在两种常用方法,即基于WSDL的[Add ...

  8. MIPI D-PHY 总结

    Operating Modes: Control, High-Speed, and Escape 1.The Lane is only in High-Speed mode during Data b ...

  9. Shadow Register 是什么?

    ARM处理器有个Shadow Register的概念,查了很多资料,语焉不详,究竟是什么意思呢? 这其实是个和硬件有关的概念. 有些register是2层的,第一层是供CPU访问,第二层供Hw访问. ...

  10. 10个经典的 Java main 方法面试题

    以下是笔者认为比较经典的关于Java main方法的面试题,与其说是Java面试题,其实也是Java的一些最基础知识问题,分享给大家,如有错误,请指出. 1.不用main方法如何定义一个类? 不行,没 ...