【画布---H5的新增技术】
创始人
2024-03-27 19:35:27
0

目录

一.H5(HTML5)的新增技术

1.绘画:画布(canvas)的使用

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

(1)创建画布的方法:

(2)获取画布:getElementById('canvas的id')

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

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

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

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

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

(8)闭合路径:closePath()

(9)设置线宽:lineWidth = '数值'

(10)填充路径:fill()

(11)设置填充颜色:fillStyle = '颜色'

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

(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)

笑脸

绘制验证码


一.H5(HTML5)的新增技术

1.绘画:画布(canvas)的使用

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

(1)创建画布的方法:

你的浏览器不支持画布

(2)获取画布:getElementById('canvas的id')

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

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

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

let canvas = document.getElementById('canvas')  //获取画布
let context = canvas.getContext('2d')   //获取画笔
context.moveTo(100,100)         //确定起始点(100,100) ,即将画笔移动到该点上。
context.lineTo(200,200)     //确定线条的另一个端点(终点)(200,200).
context.strokeStyle = 'pink' //设置描边的颜色
context.stroke()    //进行描边,让线条可见(默认的画笔颜色为黑色)

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

(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 random(min,max){return parseInt(Math.random()*(max-min)+min)}

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

// 2.随机颜色function color(min,max){var r = random(min,max)var g = random(min,max)var b = random(min,max)return `rgb(${r},${g},${b})`}

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

// 3.绘制验证码区域// 3.1设置宽高var width = 120var height = 40// 3.2获取画笔let context = document.getElementById('canvas').getContext('2d')// 3.3设置填充颜色,浅色context.fillStyle = color(180,230)// 3.4设置区域形状大小context.fillRect(0,0,width,height)

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

// 4.随机字符串function newchar(arr){var str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'for (let i = 0; i < 4; i++) {   //生成4个随机的字符var char = str[random(0,str.length)]   //随机的字符var font_size = random(18,40)   //字体大小var deg = random(-30,30)    //旋转角度context.font = font_size + 'px Simhei'  //设置字号、字体context.textBaseline = 'top'    //设置文本基线:以上边框为界context.fillStyle = color(80,150)   //设置填充颜色context.save()  //保存前面对画笔的设置context.translate(30*i+15,15)   //平移坐标系context.rotate(deg*Math.PI/180)     //绘制偏转角度context.fillText(char,-15+5,-15)    //绘制文本context.restore()   //清除前面画笔的设置,画笔恢复到初始状态arr[i] = char.toLowerCase()}}

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

// 5.随机线条for (let i = 0; i < 5; i++) {context.beginPath() //重置路径context.moveTo(random(0,width),random(0,height))    //设置线条的起点context.lineTo(random(0,width),random(0,height))    //设置线条的终点context.strokeStyle = color(180,230)    //设置线条的随机颜色context.closePath()     //关闭路径context.stroke()    //描边}

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

 // 6.随机产生的干扰小点for (let i = 0; i < 40; i++) {context.beginPath()context.arc(random(0,width),random(0,height),1,0,2*Math.PI)     //随机确定圆心坐标context.closePath()context.fillStyle = color(150,200)  //随机填充颜色context.fill()  //进行填充}

课堂练习:在文本框中输入验证码,判断是否正确。设置文本框的样式和验证码在一行中




请输入验证码:您的浏览器不支持画布

        

相关内容

热门资讯

2025年河北中考总分多少?2... 河北省教育厅发布关于做好2025年初中学业水平考试工作的通知↓↓↓河北省教育厅关于做好2025年初中...
花旗预计2026年阿里巴巴电商... 观点网讯:5月16日,花旗分析师在阿里巴巴公布3月份当季业绩后发布研究报告称,预计2026年阿里巴巴...
荒谬!网友相亲相到了“宋仲基”... 来源:新闻晨报 “相亲相到了宋仲基!”近日,有网友在社交网站上发帖称,有媒婆为其介绍相亲对象,不料发...
从“借船出海”到“造船远航”:... 转自:央视网央视网消息:今年以来,中国多家自主品牌车企纷纷加力布局海外市场,加大投入组建远洋运输船队...
外国记者走进乌兰哈达火山 看“... 转自:上观新闻“中国扩大免签政策之后,来旅行的外国游客是否有增加?”“每年淡季旺季的收入如何?”“在...
中美互降关税提振全球市场信心 “立即发货!”5月12日凌晨,美国玩具商福尔曼得知关税将调整的消息后,连夜催促中国供应商将因关税滞留...
兰州市城关区:实践硬举措涵养文... 城关区:实践硬举措涵养文明软实力  在城关区,文明实践活动蓬勃开展,一场场别出心裁的实践活动、一堂堂...
SOTA!上海AI独角兽发布新... 转自:上观新闻近日,来自上海的AI独角兽MiniMax稀宇极智发布新一代语音大模型Speech-02...
151只股中线走稳 站上半年线 证券时报·数据宝统计,截至今日上午收盘,上证综指3363.32点,收于半年线之上,涨跌幅-0.52%...
前4个月江苏对拉美进出口115... 2025年是中拉论坛正式运行10周年。跨越山海、万里为邻,证券时报记者了解到,当前,江苏企业正以开放...
中行贵州省分行原副行长徐鸿周离... 运营商财经网 赵鑫雨/文日前,官方网站发布了中国银行贵州省分行原副行长徐鸿周被开除党籍的相关消息。...
遏制克扣押金、随意涨租违约,房... 来源:央广网 央广网北京5月16日消息(记者安垚)据国家市场监督管理总局消息,近日,市场监管总局发布...
封顶!昆明这所三甲医院预计10... 5月14日,记者从云南省妇幼保健院获悉,位于官渡区、总投资超13亿元的云南省妇幼保健院新院主体结构正...
突然拉升20%涨停!批量封板,... 汽车产业链早间全线走强,其中豪恩汽电大幅拉升20%涨停。今日早盘,A股小幅震荡整理,科创50指数失守...
瑞银:阿里巴巴第四季度业绩整体... 观点网讯:5月16日,瑞银研究报告指出,阿里巴巴(BABA.US)2025财年第四季度业绩整体收入及...
从吉利博越L看自主紧凑型SUV... 来源:@经济观察报微博记者 周信5月13日,吉利第四代博越L在杭州富春江畔上市,限时售价9.29万元...
深圳龙华区福城街道冼屋老村片区... 观点网讯:5月16日,深圳市龙华区福城街道冼屋老村片区东侧地块城市更新项目(一期)、(二期)实施主体...
重磅!国务院国资委最新部署,深... 5月15日,国务院国资委全面深化改革领导小组召开2025年第一次全体会议。2025年是国企改革深化提...
母亲殴打女儿致死?当地通报:刑... 近日,网传浙江温州市瓯海区“一母亲因殴打女儿致其死亡”。5月15日,瓯海区郭溪街道办事处发布情况通报...
弘扬好家教 传承好家风!这个主... 转自:草原云5月14日,鄂尔多斯市准格尔旗精神文明建设办公室、准格尔旗新时代文明实践服务中心联合准格...