<!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. JavaScript俄罗斯方块

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...

  2. Java关于md5+salt盐加密验证

    一.陈述一下工作流程: 1.根据已有的密码字符串去生成一个密码+盐字符串,可以将盐的加密字符串也存放在数据库(看需求), 2.验证时将提交的密码字符串进行同样的加密再从数据库中取得已有的盐进行组合密码 ...

  3. 17. 星际争霸之php设计模式--职责链模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  4. 使用Scala实现Java项目的单词计数:串行及Actor版本

    其实我想找一门“具有Python的简洁写法和融合Java平台的优势, 同时又足够有挑战性和灵活性”的编程语言. Scala 就是一个不错的选择. Scala 有很多语言特性, 建议先掌握基础常用的: ...

  5. wex5 教程之 图文讲解 文件上传attachmentSimple(1)

    视频教程地址:http://v.youku.com/v_show/id_XMTc4NDAyMTY4OA==.html 效果预览: 1 调用attchmentSimple组件,打开文件管理器,并选中,显 ...

  6. Linux top和负载的说明

    转自:http://bbs.linuxtone.org/thread-1684-1-1.html top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windo ...

  7. [充电]多线程无锁编程--原子计数操作:__sync_fetch_and_add等12个操作

    转自:http://blog.csdn.net/minCrazy/article/details/40791795 多线程间计数操作.共享状态或者统计相关时间次数,这些都需要在多线程之间共享变量和修改 ...

  8. Java 基础知识 练习题

    利用文本编辑器输入课堂上练习的Hello.java,并在JDK环境下编译和运行.请将程序编译.运行的结果截图.

  9. poj 1091 跳蚤

    跳蚤 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8482   Accepted: 2514 Description Z城 ...

  10. [poj3017] Cut the Sequence (DP + 单调队列优化 + 平衡树优化)

    DP + 单调队列优化 + 平衡树 好题 Description Given an integer sequence { an } of length N, you are to cut the se ...