(精华)2020年6月28日 Canvas 基础知识

Canvas绘制线条

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>线条</title>
</head>

<body>
    <canvas id="canvas" width="850" height="750" style="border:1px solid #000"></canvas>
    <script>
        var canvas = document.getElementById('canvas');
        if (canvas.getContext) {
            // context对象 , 2d对象,使用它可以来绘制图案
            var ctx = canvas.getContext('2d');
            // ctx.beginPath(); //1. 生成路径,新建一条路径
            // ctx.moveTo(20,20);   //2. moveTo移动笔触 设置起始点,把笔移动到哪里去
            //3. 开始画图
            //画线 , 三角,圆 
            //4. 样式
            //5.  stroke (描边)  不能自动闭合路径,closePath
            // fill(实心的填充) .自动闭合路径
            //画一条线
            ctx.beginPath(); //生成路径
            ctx.moveTo(50, 100);
            ctx.lineTo(80, 200); //定义线条结束的点
            // ctx.lineTo(215,220);//定义线条结束的点
            ctx.closePath(); //关闭路径, 创建从当前点到开始点的路径
            ctx.stroke();
        }
    </script>
</body>

</html>

Canvas绘制三角形

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>三角形</title>
</head>

<body>
    <canvas id="canvas" width="850" height="750" style="border:1px solid #000"></canvas>
    <script>
        var canvas = document.getElementById('canvas');
        if (canvas.getContext) {
            // context对象 , 2d对象,使用它可以来绘制图案
            var ctx = canvas.getContext('2d');
            //画描边三角形
            //ctx.beginPath();//生成路径
            //ctx.lineWidth=20;
            //ctx.moveTo(50,100); 
            //ctx.lineTo(80,200);//定义线条结束的点
            //ctx.lineTo(215,220);//定义线条结束的点
            //ctx.lineTo(50,100);//定义线条结束的点
            //ctx.closePath();  //关闭路径, 创建从当前点到开始点的路径
            //ctx.stroke();
            //绘制填充的三角形
            ctx.beginPath();
            ctx.moveTo(300, 100);
            ctx.lineTo(120, 130);
            ctx.lineTo(150, 220);
            ctx.strokeStyle = "#ff6600";
            ctx.fillStyle = "#ff6600";
            ctx.closePath();
            ctx.stroke();
            // ctx.fill();  //不需要closePath
        }
    </script>
</body>

</html>

Canvas绘制矩形

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>矩形</title>
</head>

<body>
    <canvas id="canvas" width="850" height="750" style="border:1px solid #000"></canvas>
    <script>
        var canvas = document.getElementById('canvas');
        if (canvas.getContext) {
            // context对象 , 2d对象,使用它可以来绘制图案
            var ctx = canvas.getContext('2d');
            //3种绘制矩形 
            //    1.  fillRect(x,y,width,height) //实心, 填充
            //    2.  strokeRect(x,y,width,height) //描边的矩形
            //    3. rect路径, fill
            // clearRect(x,y,width,height)  //清除矩形区域,完全透明
            //1.绘制一个填充的矩形
            ctx.beginPath(); //
            ctx.fillStyle = '#ff6600';
            ctx.fillRect(250, 250, 80, 100);
            //2.绘制一个描边的矩形
            ctx.beginPath(); //
            ctx.strokeStyle = 'green';
            ctx.strokeRect(320, 120, 120, 100);
            //3. 绘制填充的矩形带有边框
            ctx.translate(10, 10); //左边参考点
            ctx.lineWidth = 5;
            ctx.fillStyle = '#ff6600';
            ctx.strokeStyle = 'green';
            //定义绘制的路径
            ctx.rect(0, 0, 80, 100); //只是一条路径,并没描边和填充
            ctx.stroke();
            ctx.fill();
            //4.清除指定区域,让他完全透明
            ctx.clearRect(10, 10, 50, 60);
        }
    </script>
</body>

</html>

Canvas绘制圆弧

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>圆弧</title>
</head>

<body>
    <canvas id="canvas" width="850" height="750" style="border:1px solid #000"></canvas>
    <script>
        var canvas = document.getElementById('canvas');
        if (canvas.getContext) {
            // context对象 , 2d对象,使用它可以来绘制图案
            var ctx = canvas.getContext('2d');
            // 360 * Math.PI/180   
            // arc(x,y,radius,start,end,方向(true,false)// 绘制
            // false 顺时针
            // true :逆时针
            //绘制一个实心的圆
            ctx.beginPath();
            ctx.fillStyle = '#ff6600';
            ctx.arc(70, 70, 60, 0, 2 * Math.PI, true); //
            ctx.fill();
            //绘制一个描边的圆
            ctx.translate(200, 200);
            ctx.beginPath();
            ctx.strokeStyle = '#ff6600';
            ctx.arc(70, 70, 60, 0, 2 * Math.PI, true); //
            ctx.stroke();
            //绘制一个描边的圆弧
            ctx.translate(100, 100);
            ctx.beginPath();
            ctx.strokeStyle = '#ff6600';
            ctx.arc(70, 70, 60, 0, 60 * Math.PI / 180, false); //
            ctx.stroke();
        }
    </script>
</body>

</html>

Canvas绘制图片

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>图片</title>
</head>

<body>
    <canvas id="canvas" width="850" height="750" style="border:1px solid #000"></canvas>
    <script>
        var canvas = document.getElementById('canvas');
        if (canvas.getContext) {
            // context对象 , 2d对象,使用它可以来绘制图案
            var ctx = canvas.getContext('2d');
            var img = new Image();
            img.src = './heads.png';
            img.width = '30px';
            img.heihgt = '300px';
            img.onload = function () {
                //开始绘制图片
                ctx.drawImage(img, 10, 10);
            }
            // img.οnerrοr=function(){
            // }
        }
    </script>
</body>

</html>

Canvas绘制文本

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>文本</title>
</head>

<body>
    <canvas id="canvas" width="850" height="750" style="border:1px solid #000"></canvas>
    <script>
        var canvas = document.getElementById('canvas');
        if (canvas.getContext) {
            // context对象 , 2d对象,使用它可以来绘制图案
            var ctx = canvas.getContext('2d');
            //font  textAlign  textBaseline  direction ( ltr  rtl )
            //渲染文本
            // fillText(text, x,y, maxWidth)
            // strokeText(text, x,y, maxWidth)
            ctx.font = '30px Arial';
            ctx.fillText('hello world', 10, 50, 200);
            ctx.strokeText('hello world', 10, 350, 200);
        }
    </script>
</body>

</html>

你可能感兴趣的:(#,canvas)