y:添加到垂直坐标上的位置
设置之后开始绘制的图片位置从(x,y)算起。
eg:绘制两个一样的矩形,一个在平移前绘制,一个在平移后绘制,代码如下:
var canvas = document.getElementById(“canvas”)
var ctx = canvas.getContext(“2d”)
ctx.fillStyle=“red”
ctx.fillRect(0,0,200,200)
//平移
ctx.translate(200,200)
ctx.fillRect(0,0,200,200)
运行结果如图:
1.3 、rotate - 旋转
使用语法:rotate(angle)
angle 旋转弧度,如果想使用角度,可以把角度转成弧度,公式为:deg * Path.PI/180。
eg:将一个矩形旋转45度,代码如下:
var canvas = document.getElementById(“canvas”)
var ctx = canvas.getContext(“2d”)
//旋转45度
ctx.rotate(45*Math.PI/180)
ctx.fillStyle=“red”
ctx.fillRect(0,0,200,200)
运行结果如图:
根据上述结果我们发现旋转的时候,默认原点是画布的起始点,我们想要的旋转是在矩形框中心为原点的旋转,此时我们需要借助上translate平移,重置一下原点,修改上述代码为:
var canvas = document.getElementById(“canvas”)
var ctx = canvas.getContext(“2d”)
ctx.translate(200,200)
ctx.rotate(45*Math.PI/180)
ctx.translate(-200,-200)
ctx.fillStyle=“red”
ctx.fillRect(100,100,200,200)
运行结果如图:
1.4、transform - 矩阵变换
使用语法:transform(a,b,c,d,e,f)
-
a:水平缩放
-
b:水平倾斜
-
c:垂直倾斜
-
d:垂直缩放
-
e:水平移动
-
f:垂直移动
transform可以替代前边平移、缩放、旋转三者,如下:
// 平移
translate(x,y) <=> transform(1,0,0,1,x,y) <=> transform(0,1,1,0,x,y)
// 缩放
sacle(x,y) <=> transform(x,0,0,y,0,0)
// 旋转
rotate(angle) <=> transform(Math.cos(angleMath.PI/180), Math.sin(angelMath.PI/180), -Math.sin(angleMath.PI/180), Math.cos(angleMath.PI/180))
1.5、setTransform - 矩阵变换
setTransform()方法将变换的矩阵进行重置,它把当前的变换矩阵重置为单位矩阵
使用语法:transform(a,b,c,d,e,f)
各参数说明:水平旋转、水平倾斜、垂直倾斜、垂直缩放、水平移动、垂直移动
setTransform() 方法把当前的变换矩阵重置为单位矩阵,然后以相同的参数运行 transform()。
二、canvas 操作图片
=============
drawImage() 在画布上绘制图像、画布或视频。也能够绘制图片的一部分,增加或减少图像的尺寸。以下是三种常见使用语法:
-
语法1:drawImage( img , x , y )
-
语法2:drawImage( img , x , y , width , height )
-
语法3:drawImage( img , sx , sy , swidth, sheight , x , y , width , height )
上述参数表示的意义如下:
参数 | 描述 |
img | 规定要使用的图像、画布或视频。 |
sx | 可选。开始剪切的 x 坐标位置。 |
sy | 可选。开始剪切的 y 坐标位置。 |
swidth | 可选。被剪切图像的宽度。 |
sheight | 可选。被剪切图像的高度。 |
x | 在画布上放置图像的 x 坐标位置。 |
y | 在画布上放置图像的 y 坐标位置。 |
width | 可选。要使用的图像的宽度。(伸展或缩小图像) |
height | 可选。要使用的图像的高度。(伸展或缩小图像) |
eg:利用语法3,进行绘制图片的部分内容,实现如下效果:
给上述兔子顺便加一个点击屏幕暂停开始功能,完整代码如下:
eg:使用 canvas 画布处理视频,使用定时器绘制视频的当前帧,连续起来就是一个视频,需要注意的是必须处理暂停和开始播放两种操作,具体代码如下:
var v=document.getElementById(“video1”);
var c=document.getElementById(“myCanvas”);
ctx=c.getContext(‘2d’);
v.addEventListener(‘play’,function() {var i=window.setInterval(function()
{ctx.drawImage(v,0,0,270,135)},20);},false);
v.addEventListener(‘pause’,function() {window.clearInterval(i);},false);
v.addEventListener(‘ended’,function() {clearInterval(i);},false);
三、像素级操作
=======
常见的像素级的操作有三种:
-
getImageData() - 获取画布像素数据
-
createImageData() - 创建新的、空白像素
-
putImageData() - 图像像素数据放回画布
3.1、getImageData
使用语法:getImageData( x , y , width , height )
-
x:要被提取的图像数据矩形区域的左上角 x 坐标。
-
y:要被提取的图像数据矩形区域的左上角 y 坐标。
-
width:被提取的图像数据矩形区域的宽度
-
height:被提取的图像数据矩形区域的高度
返回一个 imageData 对象,用来描述 canvas 区域隐含的像素数据,这个区域通过像素表示,起点是( x , y ),宽高为 widht 和 height 。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。
的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。
[外链图片转存中…(img-Rv0nJhgG-1713490834675)]
[外链图片转存中…(img-KyNfioNX-1713490834675)]