canvas添加局部事件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>给canvas矩阵添加事件</title>
    <style>
    canvas {
        border: 1px solid;
    }
    </style>
</head>

<body>
    <canvas id="canvas" width=500 height=500></canvas>
    <button onclick="clears();">清除</button>
</body>
<script>
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
var x = 100,
    y = 100,
    w = 100,
    h = 100;

run("red");
ctx.fillStyle = '#ADF';
ctx.fillRect(200, 200, w, h);
ctx.beginPath();
// 生成矩阵
function run(color) {
    // clears();
    ctx.fillStyle = color;
    ctx.fillRect(x, y, w, h);
}
// 清除画布
function clears() {
    ctx.beginPath();
    ctx.clearRect(0, 0, 500, 500);
    ctx.closePath();
}
// 监听画布
canvas.addEventListener("click", function(e) {
    // 鼠标x轴 >= 矩阵x轴 && 鼠标x轴 <= 矩阵x轴 + 矩阵宽度
    // 鼠标y轴 >= 矩阵y轴 && 鼠标y轴 <= 矩阵y轴 + 矩阵高度
    if (e.layerX >= x && e.layerX <= x + w && e.layerY >= y && e.layerY <= y + h) {
        run("black");
    } else if (e.layerX >= 200 && e.layerX <= 200 + 100 && e.layerY >= 200 && e.layerY <= 200 + 100) {
        ctx.fillStyle = 'red';
        ctx.fillRect(200, 200, w, h);
        ctx.beginPath();
    } else {
        run("red");
        ctx.fillStyle = '#adf';
        ctx.fillRect(200, 200, w, h);
        ctx.beginPath();
    }
});
</script>

</html>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值