首页 > 其他分享 >使用Canvas实现刮刮卡功能

使用Canvas实现刮刮卡功能

时间:2023-02-01 10:00:58浏览次数:48  
标签:function Canvas ctx 功能 刮刮卡 height canvas var 100


<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<style>
.ggk {
width: 200px;
height: 100px;
border: 1px solid #000;
margin: 0 auto;
color: red;
position: relative;

}

.ggk span {
position: absolute;
width: 100%;
height: 100%;
text-align: center;
line-height: 100px;
font-size: 50px;
user-select: none;
}

canvas {
position: absolute;
left: 0;
top: 0;
}

</style>
<div class="ggk">
<span></span>
<canvas id="canvas">
你的浏览器版本太低, 请升级浏览器.最好使用Chrome, IE太垃圾了
</canvas>
</div>

<script>
var canvas = document.querySelector("#canvas");
draw();

function draw(){
if (!canvas.getContext) return;
canvas.width = 200;
canvas.height = 100;
var ctx = canvas.getContext("2d");
productResult();
drawCover(ctx);
scratch(ctx);
}

function scratch(ctx){
/*绘制线段来实现*/
canvas.onmousedown = function (e){
var downX = e.offsetX;
var downY = e.offsetY;
ctx.beginPath();
ctx.globalCompositeOperation = "destination-out";
ctx.lineWidth = 10;
ctx.lineCap = "round";
ctx.moveTo(downX, downY);
canvas.onmousemove = function (e){
var x = e.offsetX;
var y = e.offsetY;
ctx.lineTo(x, y);
ctx.stroke();
}
}
/*在路径中绘制圆弧来实现*/
/*canvas.onmousedown = function (e){
canvas.onmousemove = function (e){
var x = e.offsetX;
var y = e.offsetY;
ctx.beginPath();
ctx.arc(x, y, 8, 0, Math.PI * 2);
ctx.globalCompositeOperation = "destination-out";
ctx.fill();
ctx.closePath();
}
}*/
canvas.onmouseup = function (){
canvas.onmousemove = null;
}
}

/*生成中奖信息*/
function productResult(){
var span = document.querySelector(".ggk span");
var arr = ["100元", "200元", "300元", "400元", "谢谢", "谢谢", "谢谢", "谢谢"];
var text = arr[randomInt(0, arr.length - 1)];
span.innerHTML = text;
}

/*绘制覆盖层*/
function drawCover(ctx){
ctx.save();
ctx.fillStyle = "rgb(100,100,100)";
ctx.fillRect(0, 0, 200, 100);
ctx.restore();
}

/**
返回随机的 [from, to] 之间的整数(包括from,也包括to)
*/
function randomInt(from, to){
return parseInt(Math.random() * (to - from + 1) + from);
}

</script>
</body>
</html>


标签:function,Canvas,ctx,功能,刮刮卡,height,canvas,var,100
From: https://blog.51cto.com/u_14389461/6030688

相关文章

  • Android 下的usb框架及功能点
    ICS4.0下Framework层的usb框架 Android下的usb主要工作还是在android的framework层。主要有以下几个文件:1.1UsbDeviceManager.java/高主要完成功能切换及状态的更新,......
  • dremio provision 模式功能简单说明
    目前此功能主要是支持yarn等资源调度的,在dremio系统中名称为弹性引擎ProvisioningService服务接口定义参考类图  不同类型的实现具体操作是由ProvisioningServ......
  • 调用后台接口实现Excel导出功能以及导出乱码问题解决
    实现效果在导出表格数据的时候,通常分为两种情况页面列表数据导出接口返回数据导出这里主要介绍接口返回数据导出,关于页面的列表数据导出,请看另一篇:vue3+element表格......
  • 接口测试|Fiddler界面主菜单功能介绍(一)
    Fiddler界面主菜单功能介绍File菜单File菜单中的命令主要支持完成通过Fiddler来启动和停止web流量的捕获(capture),也可以加载或存储捕获的流量(1)CaptureTraffic:默认勾选,勾选......
  • 不仅仅是完美的用户体验,IMWorks即时通讯带你解锁其它功能
    信息化高速发展的今天,每个企业都需准确、高效的资源整合及信息决策的汇集与分析,应用信息化手段来提升企业价值,以信息化引领企业创新。随着企业即时通讯的深入发展,促使企业充......
  • CAP4——视图引用功能介绍
    功能说明:视图引用是将基础数据汇总到一张表中,并且可来源于不同表单的视图进行聚合显示,实现基础数据的分离存储管理、和聚合拼装显示,同时可以减少自动关联以及触发等业务......
  • 租赁小程序源码定制|沈阳租赁小程序开发功能
    共享经济其实只是共享租赁早期模式,租赁产品正在逐渐增加,比如共享家具、共享房子等,这些产品都是采用租赁的模式,商业模式和盈利模式都是稳定的,因此发展的脚步会逐渐加快,租赁小......
  • 【转载】【SSM】SpringBoot 统一功能处理,(*Spring 拦截器实现与原理)
    ✨1.用户登录权限效验1.1最初用户登录验证1.2SpringAOP用户统一登录验证的问题1.3Spring拦截器1. 自定义拦截器2.将自定义拦截器加入到系统配置1.4拦截器实......
  • 购物车功能,获取地址
    购物车-动态设置tabbar徽标官方文档就是在页面一打开时调用uni.setTabBarBadge方法进行设置所以来到pages/cart页面,导入mapGetters,然后映射成计算属性,在页面打开......
  • 河北稳控科技振弦采集模块VMTool配置工具 快速测试功能
    河北稳控科技振弦采集模块VMTool配置工具快速测试功能 本章演示在计算机上通过VMTool工具读取振弦传感器数据。假设您的计算机已经有至少一个空闲的COM接口。1......