HTML5(五)——Canvas API

====

canvas 画布提供了一个画图的平面空间范围,每个点都有自己的坐标,原点位于画布的左上角,x表示横坐标,y表示纵坐标。

2.1 绘制路径

  • ctx.beginPath - 开始绘制路径

  • ctx.moveTo( x,y ) - 设置路径起点

  • ctx.lineTo( x,y ) - 绘制一条线到(x,y)点

  • ctx.closePath - 闭合图形

  • ctx.stroke - 对路径进行着色

  • ctx.fill - 对路径进行填充

eg:绘制一条线宽为5像素的红色线条,代码如下:

var canvas = document.getElementById(“mycanvas”);

var ctx = canvas.getContext(“2d”)

ctx.beginPath();

ctx.moveTo(0,0)

ctx.lineTo(400,400)

ctx.lineWidth = 5

ctx.strokeStyle = “red”

ctx.stroke()

eg:绘制一个绿色三角形,代码如下:

var canvas = document.getElementById(“mycanvas”);

var ctx = canvas.getContext(“2d”)

ctx.beginPath();

ctx.moveTo(0,0)

ctx.lineTo(400,400)

ctx.lineTo(0,400)

ctx.closePath()

ctx.lineWidth = 5

ctx.strokeStyle = “red”

ctx.stroke()

ctx.fillStyle = “green”

ctx.fill()

2.2 绘制矩形

  • ctx.rect(x,y,width,height) - 绘制矩形路径

  • ctx.strokeRect(x,y,width,height) - 绘制矩形

  • ctx.fillRect(x,y,width,height) - 绘制填充矩形

  • ctx.clearRect(x,y,width,height) - 清除矩形区域

上述绘制矩形的方法中均有四个参数,其中x,y表示矩形的左上角顶点,也算起点,width、height 为矩形的宽高。strokeRect 与 strokeStyle 配合使用,fillRect 与 fillStyle 配合使用。

eg:绘制一个带有红色边框的矩形,代码如下:

var canvas = document.getElementById(“mycanvas”)

var ctx = canvas.getContext(‘2d’)

ctx.strokeStyle=“red”;

ctx.strokeRect(100,100,200,100)

上述 stroke 替换成fill便可绘制一个红色矩形。

2.3 绘制圆形 / 弧

  • ctx.arc(x,y,radius,start,end,anticlockwise) - 绘制圆形或扇形

上述的参数中,x,y 表示圆心的坐标,radius 是半径,start 开始弧度,end 结束弧度,anticlockwise 表示是否是逆时针。

eg:绘制一个带有红色描边的黑色圆,代码如下:

2.4 绘制文本

  • strokeText(string,x,y) - 绘制空心文字

  • fillText(string,x,y) - 绘制实心文字

上述两个方法均带有三个参数,第一个 string 是需要绘制的内容,x,y 是文字的位置,需要注意的是 y 坐标是以文字的基线处开始算距离的,并非是文字顶部。文字的其他样式可通过 font 属性设置,与 css 的 font 类似。

eg:绘制实心的文字,并设置文字加粗、大小20像素是微软雅黑字体。代码如下:

var canvas = document.getElementById(“mycanvas”)

var ctx = canvas.getContext(‘2d’)

ctx.fillStyle=“red”;

ctx.font = “bold 40px 微软雅黑”

ctx.fillText(“我爱前端”,100,100)

注意:绘制文本的时候无法换行,如果需要换行的时候就需要多次绘制文字,达成换行目的。

2.5 设置渐变色

  • createLinearGradient(x1,y1,x2,y2) - 设置渐变色

其中 x1,y1 表示起点,x2,y2 表示终点,通过不同坐标可控制渐变方向。

eg:给文字设置渐变色,代码如下:

var canvas = document.getElementById(“mycanvas”)

var ctx = canvas.getContext(‘2d’)

var grd = ctx.createLinearGradient(0,0,400,400)

grd.addColorStop(0,“#4dffff”)

grd.addColorStop(1,“#8e12aa”)

ctx.fillStyle=grd;

ctx.font = “bold 40px 微软雅黑”

ctx.fillText(“我爱前端”,100,100)

2.6 设置阴影

  • shadowOffsetX - 设置水平位移

  • shadowOffsetY - 设置垂直位移

  • shadowBlur - 设置模糊度

  • shadowColor - 阴影颜色

eg:制作一个带有阴影的矩形,代码如下:

var canvas = document.getElementById(“mycanvas”)

var ctx = canvas.getContext(“2d”)

ctx.shadowOffsetX = 5;

ctx.shadowOffsetY = 5

ctx.shadowBlur = 10;

ctx.shadowColor = “rgba(0,0,0,0.5)”

ctx.fillStyle=“red”

ctx.fillRect(0,0,200,100);

后话

对于面试,说几句个人观点。

面试,说到底是一种考试。正如我们一直批判应试教育脱离教育的本质,为了面试学习技术也脱离了技术的初心。但考试对于人才选拔的有效性是毋庸置疑的,几千年来一直如此。除非你有实力向公司证明你足够优秀,否则,还是得乖乖准备面试。这也并不妨碍你在通过面试之后按自己的方式学习。
其实在面试准备阶段,个人的收获是很大的,我也认为这是一种不错的学习方式。首先,面试问题大部分基础而且深入,这些是平时工作的基础。就好像我们之前一直不明白学习语文的意义,但它的意义就在每天的谈话间。

所谓面试造火箭,工作拧螺丝。面试往往有更高的要求,也迫使我们更专心更深入地去学习一些知识,也何尝不是一种好事。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值