• 画布


    一、H5(HTML5)的新增技术

    1、绘图:画布(canvas)的使用

    2、画布:

    页面中用于绘制图形的特殊区域,开发人员可以在这个区域内进行自定义图形的绘制

    ​ (1)创建画布的方法:

    1. "画布的标识" width="宽度" height="高度">
    2. 您的浏览器不支持画布

    ​ (2)获取画布:getElementById(‘canvas的id’)

    ​ (3)获取画笔:使用context对象,语法格式是:

    let  context = canvas.getContext('2d')  //context代表的是一支笔

    ​ (4)绘制直线:直线的起始点、直线的终点、描边(设置线条的颜色)

    (5)设置描边的颜色:context.strokeStyle = ‘red’ //设置描边的颜色。颜色值可以是十六进制、颜色名

    ​ (6)设置端点的形状:使用 lineCap=’属性值’ 来设置端点的形状,取值有三种

    ​         butt:默认值,无端点,显示的是线条的方形边缘

            ​ round:圆形端点

            ​ square:方形端点

    ​ (7)路径的重置:beginPath()

    ​ (8)闭合路径:closePath()

    ​ (9)设置线宽:lineWidth = ‘数值’

    ​ (10)填充路径:fill()

    ​ (11)设置填充颜色:fillStyle = ‘颜色’

    ​ (12)画弧线或画圆:arc(x,y,r,开始角,结束角,方向)

            ​ x,y:确定圆心的坐标

            ​ r:表示圆形或弧线的半径

    ​         开始角:表示弧点的起始位置,通常用Math.PI表示(可以理解为180度)

            ​ 结束角: 表示弧点的结束位置

            ​ 方向:表示绘图的方向(逆时针、顺时针)。为true,表示逆时针,默认值为false,表示顺时针

    ​ (13)画矩形:rect(x,y,width,height),x和y表示矩形左上角的坐标

    ​ (14)填充矩形:fillRect(x,y,width,height),x和y表示矩形左上角的坐标

    ​ (15)绘制文本:context.fillText(text,x,y),text表示要绘制的文本,x和y表示坐标位置

    ​ (16)平移当前的坐标系:context.translate(x,y)

    ​ (17)设置坐标系的旋转角度:context.rotate(deg)

    ​ (18)绘制图像:fillImage(image,x,y)

    案例:绘制验证码

    ​ (1)随机颜色:随机生成 r、g、b 值

            ​ a、定义生成随机数函数:

    1. function rn(min,max){ //随机数函数
    2. return parseInt(Math.random()*(max-min)+min);
    3. }

            ​ b、随机生成 r、g、b颜色值

    1. function rc(min,max){ //随机颜色的函数
    2. var r=rn(min,max);
    3. var g=rn(min,max);
    4. var b=rn(min,max);
    5. return `rgb(${r},${g},${b})`;
    6. }

    ​         c、设置绘制验证码的区域:矩形、浅色背景

    1. var w=120;
    2. var h=40;
    3. var ctx=document.getElementById('canvas').getContext("2d");
    4. ctx.fillStyle=rc(180,230);
    5. ctx.fillRect(0,0,w,h); //在0,0的位置填充一个120*40的矩形

    ​ (2)随机文本:随机生成下标,通过下标在字符串或数组中拿到对应的字符

    1. var pool="ABCDEFGHIJKLIMNOPQRSTUVWSYZ1234567890";
    2. for(var i=0;i<4;i++){ //生成4个随机的字符
    3. var c=pool[rn(0,pool.length)];//随机的字符
    4. var fs=rn(18,40);//字体的大小
    5. var deg=rn(-30,30);//字体的旋转角度
    6. ctx.font=fs+'px Simhei'; //设置字号、字体
    7. ctx.textBaseline="top"; //绘制文本的基线:以上边线为界
    8. ctx.fillStyle=rc(80,150); //设置填充颜色
    9. ctx.save(); //保存前面对画笔的设置
    10. ctx.translate(30*i+15,15); //平移坐标系
    11. ctx.rotate(deg*Math.PI/180); //设置偏转角度
    12. ctx.fillText(c,-15+5,-15); //绘制文本
    13. ctx.restore(); //清除前面画笔的设置,画笔恢复到初始状态
    14. }

    ​ (3)随机画线条(干扰线):端点坐标随机生成、线条的角度随机设置

    1. for(var i=0;i<5;i++){
    2. ctx.beginPath(); //重置路径
    3. ctx.moveTo(rn(0,w),rn(0,h)); //设置线条的起点
    4. ctx.lineTo(rn(0,w),rn(0,h)); //设置线条的终点
    5. ctx.strokeStyle=rc(180,230); //设置线条的随机颜色
    6. ctx.closePath(); //关闭路径
    7. ctx.stroke(); //描边
    8. }

    ​ (4)随机画点:圆心坐标随机

    1. for(var i=0;i<40;i++){
    2. ctx.beginPath();
    3. ctx.arc(rn(0,w),rn(0,h),1,0,2*Math.PI); //随机确定圆心坐标
    4. ctx.closePath();
    5. ctx.fillStyle=rc(150,200); //随机的填充色
    6. ctx.fill(); //进行填充
    7. }
  • 相关阅读:
    k8s--RC
    Python3 迭代器与生成器
    备战 2023 春招,P7大咖位手打 26 大后端面试专题神技,1500+题解析助力offer
    微信小程序控制元素显示隐藏
    Vue+SpringBoot打造教学过程管理系统
    阿里技术官最新整理总结号称全网最屌“Redis核心手册”
    nodejs实现邮箱发送验证码及验证码认证功能
    控价与数据分析的关系
    clickhouse数据结构和常用数据操作
    conda常用命令合集
  • 原文地址:https://blog.csdn.net/m0_74331160/article/details/128208328