美文网首页
canvas画板工具

canvas画板工具

作者: learninginto | 来源:发表于2020-01-29 20:57 被阅读0次

canvas画板工具

  • 好久不见,先来一个美美的么么哒~~~
么么大.png
  • 需要注意的几点

    1. 我们之前说的,不能在css中固定canvas画布的大小,否则绘制和保存下来的图片会变形

    2. 所以,这里通过setWh()方法来自适应屏幕的画布大小

    3. 当鼠标移动的时候,需要特殊判断按下之前触发的事件(橡皮擦/画笔)

    4. 橡皮擦的实质是在要擦除的上方,设置一个透明的图层

    5. globalCompositeOperation:属性设置或返回如何将⼀个新的图像绘制到⽬标(已有)的

      图像上;属性值为destination-out可以模拟橡⽪擦

    注意save:保存路径(防⽌画笔样式污染其他图形)

    restore:恢复路径(防⽌画笔样式污染其他图形)

  • HTML

    <canvas id="canvas" width="500" height="400"></canvas>
    <div id="content">
        <button>橡皮擦</button>
        <button>清空画布</button>
        <button>画笔</button>
        <input type="color" id="c">
        <button>保存</button>
    </div>
    
  • CSS

    * {
        margin: 0;
        padding: 0;
    }
    
    canvas {
        position: fixed;
        left:0;
        top:0;
        background: #ffe;
        overflow: hidden;
    }
    
    #content {
        position: relative;
        left: 0;
        top: 0;
    
  • JavaScript

    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var btnList = document.getElementsByTagName("button");
    var c = document.getElementById("c");
    var color = "#000";
    var type = 1;
    
    //设置canvas与屏幕宽高一致
    function setWh() {
        canvas.width = document.documentElement.clientWidth;
        canvas.height = document.documentElement.clientHeight;
    }
    
    setWh();
    
    // 改变画笔颜色
    c.onchange = function (e) {
        color = e.target.value;
    }
    
    //橡皮擦
    btnList[0].onclick = function () {
        type = 2;
    }
    
    // 清空画布
    btnList[1].onclick = function () {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
    }
    
    //画笔
    btnList[2].onclick = function () {
        type = 1;
    }
    
    // 保存
    btnList[3].onclick = function () {
        let url = canvas.toDataURL('image/jpg');
        let a = document.createElement('a');
        document.body.appendChild(a);
        a.href = url;
        a.download = '我的杰作';
        a.target = '_blank';
        a.click();
    }
    
    canvas.onmousedown = function (e) {
        if (type === 1) {
            var disx = e.offsetX;
            var disy = e.offsetY;
            document.onmousemove = function (e) {
                ctx.beginPath();
                ctx.save();
                console.log(color)
                ctx.strokeStyle = color;
                ctx.lineWidth = 2;
                ctx.moveTo(disx, disy);
                ctx.lineTo(e.clientX, e.clientY);
                ctx.stroke();
                ctx.restore();
                ctx.closePath();
    
                disx = e.clientX;
                disy = e.clientY;
            }
        } else if (type === 2) {
            document.onmousemove = function (e) {
                ctx.beginPath();
                ctx.save();
                ctx.globalCompositeOperation = "destination-out";
                ctx.arc(e.clientX, e.clientY, 20, 0, 2 * Math.PI);
                ctx.fill();
                ctx.restore();
                ctx.closePath();
            }
        }
    
        document.onmouseup = function () {
            document.onmousemove = null;
    
        }
    }
    

相关文章

  • canvas画板工具

    canvas画板工具 好久不见,先来一个美美的么么哒~~~ 需要注意的几点我们之前说的,不能在css中固定canv...

  • figma常用快捷键 【不定期更新】

    canvas 画布 一、常用工具 创建画板:框架工具(Frame Tool)—— A 或 F 打开组件库(libr...

  • canvas2

    canvas简易画板

  • Canvas画板

    一、实现思路 (非触屏设备) 监听鼠标事件①按下鼠标:onmousedown;滑动鼠标:onmousemove;松...

  • canvas2-text

    canvas画板结合JS事件实现写字效果

  • JavaScript画板-canvas

    1.创建画布节点 2.获得画布节点 3.获得绘画对象 4.绘制画布底色 5.绘制直线 6.绘制圆 7.绘制实心文本...

  • canvas画板所学

    1.学到的新API1.1 鼠标监听document.onmousedown = function (xxx) {}...

  • canvas-画板

    闲来无趣写了个网页版的画图 Title *{padding:0; margin:0...

  • HTML5(六)canvas 矩形、路径、画板功能

    一.绘制矩形 1.什么是canvas canvas标签相当于一个画板; canvas的宽高不要用css去定义,直接...

  • Canvas画板---手机上也可以用的画板

    学习制作画板之前,我们先来了解一下canvas标签一.canvas标签1.canvas标签与img标签相似,但是c...

网友评论

      本文标题:canvas画板工具

      本文链接:https://www.haomeiwen.com/subject/ypsbthtx.html