初识canvas

前言
canvas是html5出现的新标签,像所有的dom对象一样它有自己本身的属性、方法和事件,其中就有绘图的方法,js能够调用它来进行绘图 ,最近在读《HTML5程序设计(第2版)》下面对其中最好玩的canvas的学习做下读书笔记与实验。

历史

Canvas的概念最初是由苹果公司提出的,用户在Mac OS X WebKit中创建控制板部件。在Canvas出现之前,开发人员若要在浏览器中使用绘图API,只能使用flash和svg插件,或只有ie支持的vml,或者一些JavaScript技巧。

替换内容
访问页面的时候,如果浏览器不支持canvas元素,可以通过下面的方式提示访问者,

<canvas id="canvas">
Update your brower to enjoy canvas
</canvas>

除了上面代码中的文本外,同样还可以使用图片,不论文本还是图片都会在浏览器不支持canvas元素的情况下显示出来

使用canvas API

首先获取canvas的context,然后通过context的api进行绘制图形。getContext(contextID),参数 contextID 指定了您想要在画布上绘制的类型。当前唯一的合法值是 “2d”,它指定了二维绘图。

var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');

绘制直线
beginPath();方法开始一条路径,或重置当前的路径。
moveTo(x,y);将画笔移动到画布的一个位置。
lineTo(x,y);方法添加一个新点,然后创建从该点到画布中最后指定点的线条(该方法并不会创建线条)。
stroke();将结果绘制到画布上。

//用绝对坐标来创建一条路径
context.beginPath();
context.moveTo(70,140);
context.lineTo(140,70);
//将这条线绘制到canvas上
context.stroke();

效果:
这里写图片描述
绘制带有填充色的矩形
fillRect(x,y,width,height);
x:矩形左上角的x坐标,y:矩形左上角的y坐标;
width:矩形的宽度,height:矩形的高度。

//将填充色设为红色
context.fillStyle = '#FF0000';
//设置填充位置、大小
context.fillRect(50,50,60,60);

效果:
这里写图片描述

绘制曲线
绘制曲线使用quadraticCurveTo方法,quadraticCurveTo(cpx,cpy,x,y);参数是两组(x,y)点,第一组(cpx,cpy)是贝塞尔控制点,第二组(x,y)是曲线的终点。

//第一条曲线向右下方弯曲
context.quadraticCurveTo(170,0,260,190);
//第二条曲线向右上方弯曲
context.quadraticCurveTo(310,250,410,250);
//使用红色的粗线条来绘制路径
context.strokeStyle='#FF0000';
context.lineWidth=5;
context.stroke();

效果:
这里写图片描述

在canvas中插入图片
drawImage() 方法在画布上绘制图像、画布或视频。
context.drawImage(img,sx,sy,swidth,sheight,x,y,width,height);
img:规定要使用的图像、画布或视频。sx:可选。开始剪切的 x 坐标位置。
sy:可选。开始剪切的 y 坐标位置。swidth:可选。被剪切图像的宽度。
sheight:可选。被剪切图像的高度。x:在画布上放置图像的 x 坐标位置。
y:在画布上放置图像的 y 坐标位置。width:可选。要使用的图像的宽度。(伸展或缩小图像)
height:可选。要使用的图像的高度。(伸展或缩小图像)

//加载图片 demo.jpg
var img = new Image();
img.src='demo.jpg';
//图片加载完成后将其显示在canvas上
img.onload = function(){
    context.drawImage(img,0,0,450,450,0,0,300,300);
}

效果:
这里写图片描述
canvas文本
context对象的文本绘制功能有两个方法:
- fillText( text, x, y, maxwidth)
- strokeText( text, x, y, maxwidth)

两个函数的参数完全相同,文本和用于指定文本位置的的坐标参数是必填的,maxwidth是可选参数,用于限制字体大小。

//设置字号为60px,字体为impact
context.font = '60px impact';
//将文本填充为红色
context.fillStyle = '#FF0000';
//设置文本居中
context.textAlign = 'center';
//将字体填充到canvas画布上
context.fillText('Hello World!',200,60,400);

效果:
这里写图片描述

小结

canvas的功能很强大,这里介绍的只是一些初级的使用方法。利用canvas可以实现许多复杂的动画。

印刷电路板(PCB)作为电子元件的关键支撑体,在电子设备中扮演着不可或缺的角色,其市场发展态势备受关注。QYResearch 的调研数据为我们揭示了该市场的全景:2024 年,全球印刷电路板市场规模约达 782.9 亿美元,而展望 2031 年,这一数字有望攀升至 1012.7 亿美元,在 2025 - 2031 期间,年复合增长率(CAGR)预计保持在 3.8%。然而,当前美国 2025 年关税框架的潜在变动,已然在全球市场掀起波澜,对印刷电路板市场的竞争格局、区域经济协同以及供应链体系产生着深远影响。 一、印刷电路板基础概述 印刷电路板,又被称作印制电路板或印刷线路板,常见英文缩写为 PCB(Printed circuit board)或 PWB(Printed wire board)。其内部存在金属导体,承担着连接电子元器件线路的重任。传统电路板主要运用印刷蚀刻阻剂的工艺,以此构建电路的线路与图面,这也是其名称的由来。在现代电子技术领域,PCB 通过电子印刷术制造而成,它成功搭建起电子元器件之间的电气连接桥梁,成为各类电子设备的核心组件。无论是体积小巧的智能穿戴设备,还是大型的服务器系统,只要其中配备集成电路等电子元件,PCB 必然 “参与其中”。 二、市场规模增长引擎 (一)中国主导地位凸显 中国在全球印刷电路板市场中占据着举足轻重的地位。据预测,2025 年中国市场规模有望达到 4333.21 亿元,在全球市场的占比将超过 50%。这一卓越成绩的背后,人工智能(AI)与新能源汽车产业功不可没,二者已成为驱动中国 PCB 市场增长的核心动力。以 AI 产业为例,随着 AI 技术的迅猛发展,对算力的需求呈爆发式增长,这使得 AI 服务器的市场需求大幅提升。而每台 AI 服务器中 PCB 的价值量可达 5000 元,预计到 2025 年,全球 AI 服务器相关的 PC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值