基于html+JS实现canvas简易画图工具

这篇博客介绍了一个使用HTML5 Canvas元素创建的简易画图工具。通过获取canvas节点并监听鼠标事件,实现了从鼠标按下到松开的绘画过程。用户还可以通过清除按钮清空画布,以及调整线条颜色和粗细。该示例展示了canvas的基本绘图操作和事件处理。
摘要由CSDN通过智能技术生成

使用canvas来创建区域,建立核心对象,再接着分别获取几个按钮的节点,确定鼠标按下的起始位置,和鼠标释放时的位置,并为其加上移动事件,鼠标松开时则删除移动节点。点击清除画布按钮,使用clearRect清除画布。

代码如下,注释在其内,请君一阅。

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>简易画图工具</title>
</head>
<style>
    section {
        width: 700px;
    }

    h1 {
        text-align: center;
    }

    canvas {
        margin-bottom: 20px;
    }
    aside{
        text-align: center;
    }
    aside>input{
        margin-right: 20px;
    }
</style>

<body>
    <section>
        <h1>简易画图工具</h1>
        <canvas id="canNode" width="700px" height="400px"></canvas>
        <aside>
            <input type="button" value="清除画布" class="clear">
            <input type="color" class="yanse">
            <input type="range" min="1" max="10" class="cuxi">
        </aside>
    </section>
    <script src="./hua.js"></script>
</body>

</html>

 

canNode.style.border = "3px solid red";
let pen = canNode.getContext("2d");
console.log(canNode.clientWidth, canNode.clientHeight);//canvas标签的填充盒尺寸  700、400
console.log(canNode.offsetLeft, canNode.offsetTop);//canvas节点距左侧和顶部的距离  8、72

//获取按钮节点
let clearEle = document.getElementsByClassName("clear")[0];
let colEle = document.getElementsByClassName("yanse")[0];
let cuxiEle = document.getElementsByClassName("cuxi")[0];

//鼠标按下时
canNode.addEventListener("mousedown", function (e) {
    let event = e || window.event;
    //获取鼠标起始位置
    let x1 = event.clientX - canNode.offsetLeft;
    let y1 = event.clientY - canNode.offsetTop;

    // console.log(event.offsetX, event.offsetY);
    // console.log(event.clientX, event.clientY);
    // console.log(event.clientX - canNode.offsetLeft, event.clientY - canNode.offsetTop);
    pen.beginPath();
    pen.moveTo(x1, y1);

    //鼠标移动时进行绘画
    canNode.addEventListener("mousemove", hua);

    //鼠标松开时则删除移动节点
    canNode.addEventListener("mouseup", function () {
        canNode.removeEventListener("mousemove", hua);
    });
});

//绘画移动
function hua(e) {
    let event = e || window.event;
    let x2 = event.offsetX;
    let y2 = event.offsetY;
    pen.lineTo(x2, y2);
    pen.strokeStyle = colEle.value;
    pen.lineWidth = cuxiEle.value;
    pen.stroke();
}

//清除画布
clearEle.addEventListener("click", function () {
    pen.clearRect(0,0,canNode.clientWidth, canNode.clientHeight);
});

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值