<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style>
body {
height: 1000px;
}
</style> </head>
<body>
<div style="position: relative; width: 300px; height: 100px;">
<canvas id="rect" width="300" height="100" style="position:absolute;left:0;top:0;"></canvas>
<canvas id="arc" width="300" height="100" style="position:absolute;left:0;top:0;"></canvas>
</div>
<script type="text/javascript">
function WipeImg(rect, arc) {
var canvas = document.getElementById(rect);
var context = canvas.getContext("2d");
var img = new Image();
img.onload = function () {
context.drawImage(this, 0, 0, canvas.width, canvas.height);//将图片放置画布上
}
img.src = '../js_面向对象/image/bdlogo.gif';//图片地址
var canvas2 = document.getElementById(arc);
var context2 = canvas2.getContext("2d");
context2.fillStyle = "#ccc";
context2.fillRect(0, 0, 300, 100);
context2.fill();
context2.globalCompositeOperation = "destination-out";//源图像是透明的,目标图像部分被显示出来
var isMousedown = false;
canvas2.addEventListener("mousedown", function (e) {
isMousedown = true;
var docEle = document.documentElement;
var x = (e.clientX) ;+ docEle.scrollLeft - docEle.clientLeft;
var y = (e.clientY) + docEle.scrollTop - docEle.clientTop;
//可以利用createRadialGradient给定指定值去画渐变效果
//var radgrad = context2.createRadialGradient(x, y, 0, x, y, 30);
//radgrad.addColorStop(0, 'rgba(0,0,0,0.6)');
//radgrad.addColorStop(1, 'rgba(255,255,255,0)');
//context2.fillStyle = radgrad;
context2.fillStyle = "#fff";
context2.beginPath();
context2.arc(x, y, 30, 0, Math.PI * 2, true);
context2.closePath();
context2.fill();
canvas2.addEventListener("mousemove", function (e) {
if (!isMousedown) return false;
var docEle = document.documentElement;
var x = (e.clientX) + docEle.scrollLeft - docEle.clientLeft;
var y = (e.clientY) + docEle.scrollTop - docEle.clientTop;
var radgrad = context2.createRadialGradient(x, y, 0, x, y, 30);
radgrad.addColorStop(0, 'rgba(0,0,0,0.6)');
radgrad.addColorStop(1, 'rgba(255,255,255,0)');
context2.fillStyle = radgrad;
context2.beginPath();
context2.arc(x, y, 30, 0, Math.PI * 2, true);
context2.closePath();
context2.fill();
}, false);
canvas2.addEventListener("mouseup", function (e) {
isMousedown = false;
}, false);
}, false);
}
WipeImg("rect", "arc");
</script>
</body>
</html>

  

canvas 利用canvas中的globalCompositeOperation 绘制刮奖 效果的更多相关文章

  1. HTML5实现刮奖效果

    原文:HTML5实现刮奖效果 要实现刮奖效果,最重要的是要找到一种方法:当刮开上层的涂层是就能看到下层的结果.而HTML5的canvas API中有一个属性globalCompositeOperati ...

  2. HTML5 Canvas实战之刮奖效果

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

  3. 简单入门canvas - 通过刮奖效果来学习

    一 .前言 一直在做PC端的前端开发,从互联网到行业软件.最近发现移动端已经成为前端必备技能了,真是不能停止学习.HTML5新增的一些东西,canvas是用的比较多也比较复杂的一个,简单的入门了一下, ...

  4. 使用MDScratchImageView实现刮奖效果

    使用MDScratchImageView实现刮奖效果 https://github.com/moqod/iOS-Scratch-n-See 最终效果: 其实这是使用了别人的东西而已:) 源码: // ...

  5. canvas写的一个刮奖效果

    <!DOCTYPE html><head> <meta charset="utf-8"> <meta http-equiv="X ...

  6. [canvas]利用canvas绘制自适应的折线图

    前段时间学习了用canvas绘制折现图,且当画布变换大小,折现图会随之变化,现附上代码 <!DOCTYPE html> <html lang="en"> & ...

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

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

  8. 使用PorterDuffXfermode画出刮刮奖效果p146-p148

    package com.zzw.Qunyinzghuan3; import android.content.Context; import android.graphics.Bitmap; impor ...

  9. canvas 绘制刮刮卡

    思路=> 用div来展示刮奖结果,用canvas绘制刮奖前展示的图片或者文字:将canvas叠在div上方,刮奖是只需要操作canvas配合touch事件即可简单完成. canvas刮奖可以用g ...

随机推荐

  1. Java多线程编程——进阶篇一

    一.线程栈模型与线程的变量 要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型. 线程栈是指某一时刻内存中线程调度的栈信息,当前调用的方法总是位于栈顶.线程栈的内容是随着程序的运行动态变化的, ...

  2. Hibernate 一对多 保存和修改数据

    Student和Sclass表,Student外键cid是Sclass的cid create table sclass( cid ) primary key, cname ) )go create t ...

  3. 马哥教育视频笔记:01(Linux常用命令)

    1.查看缓存中使用的命令和命令路径 [wskwskwsk@localhost /]$ hash 命中 命令 /usr/bin/printenv /usr/bin/ls /usr/bin/clear 2 ...

  4. win10查看连接过的wifi密码

    cmd窗口 运行   “netsh wlan show profiles name="linasd" key=clear”

  5. Android布局-TableLayout表格布局

    一.表格布局-TableLayout 1.概念 表格布局采用行列的形式来管理UI的控件.表格布局适合于有规则的布局. TableRow,用来管理行,TableRow中的一个空间占据该行的一列.若不用T ...

  6. struts_表单得到数据

    在大家学习struts表达式语言的时候经常会遇到,从表单的提交上面得到数据, 而如何将表单的数据得到呢? 下面就介绍其中的一种方式: :以类的方式进行注入我们以login为例子 首先可以在struts ...

  7. Auty自动化测试框架第四篇——生成测试结果报告

    [本文出自天外归云的博客园] 本次为Auty框架添加生成测试结果报告功能,文件结构更新:

  8. HDU 4048 Zhuge Liang's Stone Sentinel Maze

    Zhuge Liang's Stone Sentinel Maze Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/327 ...

  9. Web Performance Test: 如果使用Plugin过滤Dependent Request

    前言 由于Visual Studio的Web Performance Test是基于XML脚本的,留给用户修改测试行为的自由度并不高.因此,Plugin机制就对于实现很多客户化的配置显得很重要. 问题 ...

  10. php多维数组去除空元素

    在php中去除数组中的空值可以使用array_filter() 这个函数 但是这个函数只能对一维数组起作用,一旦需要对多维数组去空就不行了,而且去除的空也包括(int)0,(string)0,使用起来 ...