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

举报
愚公搬代码 发表于 2021/10/18 23:58:41 2021/10/18
【摘要】 Canvas绘制线条 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"&gt...

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

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>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。

原文链接:codeboy.blog.csdn.net/article/details/106991626

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。