• canvas


    html5的canvas元素使用javascript在页面上绘制图像。
    canvas拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
    canvas本身没有绘图能力,所有的绘制工作需要使用javascript来完成。

    1、矩形
    创建canvas元素定义一个id和宽度、高度。

    <canvas id="test1" width="400" height="200"></canvas>
    <script>
        var c = document.getElementById("test1");//通过id获取canvas元素对象
        var cxt = c.getContext("2d");//创建context元素
        cxt.fillStyle = "#999"; //fillStyle填色
        cxt.fillRect(0, 0, 150, 150);//fillRect()方法给定了形状、位置和尺寸,比如从(0,0)开始绘制(150, 150)大小的矩形
    </script>

    2、线条

    moveTo()开始一条路径,将坐标点移至该设置的坐标点。
    lineTo()添加一个新的坐标点,然后创建从该点到画布中最后指定点的线条,该方法并不会显示创建的线条,需要stroke()方法来描边显示出线条。类似ps中的路径绘制,首先勾出路径了最后描边才能看到图形。
    stroke()方法会绘制出通过moveTo()和lineTo()方法定义的路径,默认是黑色。
    lineWidth 线条的宽度 不带单位的数值。
    stokeStyle 填充色 rgb rgba 十六进制色值

    <canvas id="test2" width="600" height="500"></canvas>
    <script>
        var c = document.getElementById("test2");
        var cxt = c.getContext("2d");
        cxt.moveTo(400, 300);
        cxt.lineTo(500, 450);
        cxt.lineTo(400, 350);
        cxt.lineWidth = "2";
        cxt.strokeStyle= "#0f0";
        cxt.stroke();
    </script>

    3、绘制圆形
    arc()方法创建弧、曲线
    如果需要绘制圆,原始角设置为0,结束角设置为2*Math.PI。使用stroke()或fill()方法在画布上绘制实际的弧。
    context.arc(x, y, r, sAngle, eAngle, counterclockwise);
    x,y圆心的坐标
    r圆的半径
    sAngle 起始角,以弧度计。(弧的圆形的三点钟位置是0度)
    eAngle 结束角,以弧度计。
    counterclockwise 可选,顺时针或逆时针绘图。true为逆时针,false为顺时针。

    <canvas id="test2" width="600" height="500"></canvas>
    <script>
        window.onload = function() {
            var c = document.getElementById("test2");
            var cxt = c.getContext("2d");
            cxt.beginPath();
            cxt.arc(100, 100, 50, 0, 2*Math.PI);
            cxt.closePath();
            cxt.stroke();
        }
    </script>

     4、路径绘制矩形

    <canvas id="test2" width="600" height="500"></canvas>
    <script>
            var c = document.getElementById("test2");
            var cxt = c.getContext("2d");
            cxt.moveTo(100,100);
            cxt.lineTo(200,100);
            cxt.lineTo(200,200);
            cxt.lineTo(100,200);
            cxt.lineTo(100,100);
            cxt.closePath(); //闭合路径,如果绘制矩形没有闭合开始的角会有空白的区域,因为绘制的路径是从中间向内外扩展相同的距离数值,导致实际矩形的宽度比正常的计算方法小
            //lineJoin 属性设置或返回所创建边角的类型,当两条线交汇时。3个属性值bevel创建斜角,round创建圆角,miter默认,尖角。
            cxt.lineJoin = "round";
            cxt.lineWidth = 5;
            cxt.strokeStyle = "#f00";
            cxt.stroke();
    </script>

     5、图像、视频

    drawImage() 方法在画布上绘制图像、画布或视频。
    drawImage(img, sx, sy, swidth, sheight, x, y, width, height);
    img规定要使用的图像、画布或视频。
    sx,sy可选,开始剪切的坐标点。
    swidth,sheight可选,被剪切的图像的宽度和高度
    x,y在画布上放置的坐标点位置
    width,height可选,要使用的图像的宽度和高度。

    <img id="logo" src="images/logo.png" alt="logo" />
    <canvas id="test2" width="600" height="400" style="border: 1px solid #ff8604;"></canvas>
    <script>
        window.onload = function() {
            var c = document.getElementById("test2");
            var cxt = c.getContext("2d");
            var img = document.getElementById("logo");
            cxt.drawImage(img, 0, 0, 100, 80, 10, 10, 100, 80);
        }
    </script>
    <video controls autoplay id="video" width="270">
        <source src="http://www.w3school.com.cn/example/html5/mov_bbb.mp4" type="video/mp4" />
        <source src="http://www.w3school.com.cn/example/html5/mov_bbb.ogg" type="video/ogg" />
        <source src="http://www.w3school.com.cn/example/html5/mov_bbb.webm" type="video/webm" />
    </video>
    <canvas id="myCanvas" width="600" height="400"></canvas>
    <script>
        var c = document.getElementById("myCanvas");
        var v = document.getElementById("video");
        var ctx = c.getContext("2d");
        var timer;
        v.addEventListener('play', function() {
            timer = setInterval(function() {
                ctx.drawImage(v, 0, 0);
            }, 20)
        }, false);
        v.addEventListener('pause', function() {
            clearInterval(timer);
        }, false);
        v.addEventListener('ended', function() {
            clearInterval(timer);
        }, false);
    </script>

    填充颜色
    fillStyle属性设置填充的颜色、渐变或模式。
    1、color 绘图填充的颜色值默认#000000

    2、gradient渐变
    createLinearGradient()创建线性渐变对象,该对象作为fillStyle或strokeStyle属性的值。
    使用addColorStop()方法来规定不同的颜色,以及在何处定位颜色。位置在0-1之间
    context.createLinearGradient(x0, y0, x1, y1)
    x0,y0: 渐变开始点的坐标
    x1,y1: 渐变结束点的坐标

    <canvas id="test2" width="600" height="500"></canvas>
    <script>
        var c = document.getElementById("test2");
        var cxt = c.getContext("2d");
        var testGradient = cxt.createLinearGradient(0, 0, 50, 0);
        testGradient.addColorStop(0, "#000");
        testGradient.addColorStop(0.5, "#fff");
        testGradient.addColorStop(1, "#f00");
        cxt.moveTo(0, 0);
        cxt.lineTo(50, 50);
        cxt.lineTo(0, 50);
        cxt.lineTo(0, 0);
        cxt.closePath();
        cxt.strokeStyle = testGradient;
        cxt.stroke();
    </script>


    3、pattern 用于填充绘图的pattern对象

    <img id="lamp" src="images/logo.png" alt="" width="50" />
    <canvas id="test2" width="600" height="500"></canvas>
    <script>
        window.onload = function() {
            var c = document.getElementById("test2");
            var cxt = c.getContext("2d");
            var img = document.getElementById("lamp");
            var pat = cxt.createPattern(img, "repeat");
            cxt.rect(0, 0, 400, 400);
            cxt.fillStyle = pat;
            cxt.fill();
        }
    </script>
  • 相关阅读:
    eventbus3-intellij-plugin插件搜不到
    flutter控件之CheckBox
    Java中常见数据结构:list与map -底层如何实现
    flutter控件之RadioButton
    git add Untracked files
    执行git push出现"Everything up-to-date"
    用flutter写一个精美的登录页面
    Android Studio最全插件整理
    Mac下git的环境搭建和基本使用
    上周热点回顾(7.1-7.7)团队
  • 原文地址:https://www.cnblogs.com/wanbi/p/4312904.html
Copyright © 2020-2023  润新知