画布canvas的基础使用

画布canvas的基础使用

一、基本用法

(1)创建并获取canvas对象–获取画布
通过document.getElementById()等方法取得canvas对象。
(2)取得上下文(context)
图形上下文是一个封装了很多绘图功能的对象,用于实现绘制操作,参数只能是“2d”
(3)定义填充样式
context.fillStyle=‘red’
(4)绘制填充图形、线条、边框图像等
填充图像用

			// 填充样式
             context.fillStyle = 'red'
            // 绘制填充圆
            context.fill();

边框图形用

 			context.strokeStyle = 'red'
            context.stroke();

线条用

context.lineTo(100, 100);//参数:执行本条画线操作后,的终点(x,y)是100,100
//这条直线结束的位置就是下条直线开始的位置
例1:绘制一个填充矩形

效果:
请添加图片描述

html代码

 <!-- 创建一个画布对象 -->
 	<canvas></canvas>

javaScript代码

			var canvas = document.querySelector('canvas'); //选择器获取画布
            // 2.获取上下文对象
            var context = canvas.getContext('2d'); //只针对x轴和y轴
            // 3.绘制填充样式
            context.fillStyle = 'red'//设置颜色为红色
            // 4.绘制填充矩形
            context.fillRect(10, 10, 100, 100) //第一个参数是x轴开始位置,第二个参数是y轴开始位置,第三个参数是绘制图形的宽,第四个位置是绘制图形的高

二、详细用法

1.绘制填充矩形
见例一
2.绘制边框矩形

效果:
请添加图片描述
html代码

 <!-- 创建一个画布对象 -->
 	<canvas></canvas>

javaScript代码

            //1.获取画布
            var canvas = document.querySelector('canvas');
            // 2.获取画布上下文对象
            var context = canvas.getContext('2d');
            // 3.设置轮廓样式
            context.strokeStyle = 'red'
            // 4.设置轮廓的线宽
            context.lineWidth = 3; //如果线宽等于宽高,会变成填充图像
            // 5.绘制边框矩形或者轮廓矩形
            context.strokeRect(10, 10, 100, 100);//第一个参数是x轴开始位置,第二个参数是y轴开始位置,第三个参数是绘制图形的宽,第四个位置是绘制图形的高
3.绘制填充圆或者边框圆

效果:

请添加图片描述请添加图片描述

html代码

 <!-- 创建一个画布对象 -->
 	<canvas></canvas>

javaScript代码

 // 获取画布
            var canvas = document.querySelector('canvas');
            // 获取画布上下文对象
            var context = canvas.getContext('2d');
            // 绘制圆直线曲线需要路径 开始路径
            context.beginPath();
            // 圆的路径 x y r 开始弧度 结束弧度( Math.PI --180度) 圆的方向是否是逆时针路径
            context.arc(50, 50, 50, 0, Math.PI * 2);
            // 结束路径
            context.closePath();
            // 填充样式
            context.fillStyle = 'red'
            // 绘制填充圆
            context.fill();
            // 绘制轮廓圆
            //![请添加图片描述](https://img-blog.csdnimg.cn/f9395b2698ce41e6ae0fbb4e1df14d0f.jpg)
 context.strokeStyle = 'red'
            // context.stroke();
4.绘制一个扇形

效果:
请添加图片描述

html代码

 <!-- 创建一个画布对象 -->
 	<canvas></canvas>

javaScript代码

 			// 获取画布
            var canvas = document.querySelector('canvas');
            // 获取画布上下文对象
            var context = canvas.getContext('2d');
            // 绘制圆直线曲线需要路径 开始路径
            context.beginPath();
            // 绘制四分之一圆
            context.arc(100,100,50,0,Math.PI/2);
            // // 直线路径
            context.lineTo(100, 100);//参数:执行本条画线操作后,的终点(x,y)是100,100
            context.lineTo(150, 100);//这条直线起点就是上条直线结束的位置
            // 结束路径
            context.closePath()
            // 绘制轮廓
            context.strokeStyle = 'red'
            context.stroke();
5.线性渐变
        1.获取画布
        2.获取上下文
        3.声明一个线性渐变对象  渐变x、y轴开始的位置 结束位置
            context.createLinearGradient(0,0,400,400)
        4.给渐变对象添加渐变色  范围 0 ~ 1 
        5.把渐变对象给到样式填充图形   填充图形的时候设置样式
        6.绘制一个图形

效果:
请添加图片描述

html代码

 <!-- 创建一个画布对象 -->
     <canvas width="400px" height="400px"></canvas>

javaScript代码

    <script>
        window.onload = function(){
            // 1.获取画布
            var canvas = document.querySelector('canvas')
            // 2.获取上下文
            var context = canvas.getContext('2d')
            // 3.声明一个线性渐变对象  渐变x、y轴开始的位置 结束位置
            var g = context.createLinearGradient(0,0,400,400)
            // 4.给渐变对象添加渐变色  范围 0 ~ 1 
            g.addColorStop(0,'red')
            g.addColorStop(0.5,'blue')
            g.addColorStop(1,'green')
            // 5.把渐变对象给到样式填充图形   填充图形的时候设置样式
            context.fillStyle= g
            // 绘制一个图形
            context.fillRect(0,0,400,400)
        }
    </script>
6.径向渐变(圆的渐变并且可以不是同心圆)

效果:
请添加图片描述

 <!-- 创建一个画布对象 -->
     <canvas width="400px" height="400px"></canvas>

javaScript代码

 <script>
 window.onload = function(){
            // 1.获取画布
            var canvas = document.querySelector('canvas')
            // 2.获取上下文
            var context = canvas.getContext('2d')
            // 3.声明一个径向渐变对象  渐变开始圆(内圆)x、y轴的位置 开始圆半径 渐变的结束圆(外圆)的 x、y坐标 结束圆的半径
            var g = context.createRadialGradient(200,200,100,200,200,200)
            // 4.给渐变对象添加渐变色  范围 0 ~ 1 
            g.addColorStop(0,'red')
            g.addColorStop(0.5,'blue')
            g.addColorStop(1,'green')
            // 把渐变对象给到样式填充图形   填充图形的时候设置样式
            context.fillStyle= g
            // 绘制一个图形
            context.fillRect(0,0,400,400)
        }
    </script>
7.绘制文本

效果:
请添加图片描述

html代码

 <!-- 创建一个画布对象 -->
     <canvas width="400px" height="400px"></canvas>

javaScript代码

    <script>
        var canvas = document.querySelector('canvas')
        var context = canvas.getContext('2d')
        // 绘制文本:str:绘制文本字符串 x,y:文本的显示坐标  第4个参数可以放字体类型(宋体)
        context.font = '16px blod';//字体样式
        context.fillText('填充文本', 100, 100)
        context.strokeText('轮廓文本', 200, 200)
    </script>
8.绘制图片

格式:context.drawImage(img,x,y,width,height);
           context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);
参数解释:
           img 规定要使用的图像、画布或视频。
           sx 可选。开始剪切的 x 坐标位置。
           sy 可选。开始剪切的 y 坐标位置。
           swidth 可选。被剪切图像的宽度。
           sheight 可选。被剪切图像的高度。
           x 在画布上放置图像的 x 坐标位置。
           y 在画布上放置图像的 y 坐标位置。
           width 可选。要使用的图像的宽度。(伸展或缩小图像)
           height 可选。要使用的图像的高度。(伸展或缩小图像)

效果:
请添加图片描述

html代码

 <!-- 创建一个画布对象 -->
    <canvas width="400px" height="400px" style="background-color: pink;"></canvas>

javaScript代码

    <script>
        var canvas = document.querySelector('canvas')
        var context = canvas.getContext('2d')
         // 创建img节点	绘制图片到画布中,图片dom节点,img节点绘制或者创建img节点
        var img = new Image()
        img.src = 'https://img0.baidu.com/it/u=260444583,2287575279&fm=26&fmt=auto&gp=0.jpg'
        // 绘制图片到画布中  从0,0点开始绘制图片,绘制一个200*200的图片
        img.onload = function(){
            context.drawImage(img,0,0,200,200);
        }
    </script>
9.绘制视频

效果:
请添加图片描述

html代码

 <!-- 创建一个画布对象 -->
    <canvas width="400px" height="400px"></canvas>
    <video src="../day03/音视频/1.mp4" width="400px" controls autoplay muted></video>

javaScript代码

    <script>
        window.onload = function () {
            var canvas = document.querySelector('canvas')
            var context = canvas.getContext('2d')
            var video = document.querySelector('video')
            draw()
            function draw() {
                          //参数 视频 放置在x y 视频宽 视频高
                context.drawImage(video, 0, 0, 200, 200)
                requestAnimationFrame(draw)//j加上后会与视频同步显示画面
            }
        }
    </script>

三、结语

           画布的基础使用很简单,但如果是更高级的使用就很难了,难道可以分出一个职业专门来绘制成品来投入使用,常见的H5小游戏,微信小程序就能看到canvas的影子,这同样也是一个面试的加分项,能看到这说明你很有耐心,这不点个赞再走~谢谢。。哈哈哈
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值