Canvas详细使用方法(二)
创始人
2024-06-02 04:59:02
0

线型 Line styles

lineCap: 属性的值决定了线段端点显示的样子。它可以为下面的三种的其中之一:

  • butt 截断,默认是 butt。
  • round 圆形
  • square 正方形
    lineJoin: 属性的值决定了图形中线段连接处所显示的样子。它可以是这三种之一:
  • round 圆形
  • bevel 斜角
  • miter 斜槽规,默认是 miter。

在这里插入图片描述



Document

你的浏览器不兼容Canvas,请升级您的浏览器!


在这里插入图片描述



Document

你的浏览器不兼容Canvas,请升级您的浏览器!


在这里插入图片描述

绘制文本

canvas 提供了两种方法来渲染文本

  • fillText(text, x, y [, maxWidth])
    • 在 (x,y) 位置,填充指定的文本
    • 绘制的最大宽度(可选)。
  • strokeText(text, x, y [, maxWidth])
    • 在 (x,y) 位置,绘制文本边框
    • 绘制的最大宽度(可选)。
      文本的样式(需在绘制文本前调用)
  • font = value: 当前绘制文本的样式。这个字符串使用和 CSS font 属性相同的语法。默认的字体是:10px sans-serif
  • textAlign = value:文本对齐选项。可选的值包括:start, end, left, right or center. 默认值是 start
  • textBaseline = value:基线对齐选项。可选的值包括:top, hanging, middle, alphabetic, ideographic, bottom。
    • 默认值是 alphabetic


Document

你的浏览器不兼容Canvas,请升级您的浏览器!


在这里插入图片描述

绘制图片

绘制图片,可以使用 drawImage 方法将它渲染到 canvas 里。drawImage 方法有三种形态:

  • drawImage(image, x, y)
    • 其中 image 是 image 或者 canvas 对象,x 和 y 是其在目标 canvas 里的起始坐标
  • drawImage(image, x, y, width, height)
    • 这个方法多了 2 个参数:width 和 height,这两个参数用来控制 当向 canvas 画入时应该缩放的大小
  • drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
    • 第一个参数和其它的是相同的,都是一个图像或者另一个 canvas 的引用。前 4 个是定义图像源的切片位置和大小,后 4 个则是定义切片的目标显示位置和大小

图片的来源,canvas 的 API 可以使用下面这些类型中的一种作为图片的源

  • HTMLImageElement:这些图片是由Image()函数构造出来的,或者任何的< img >元素
  • HTMLVideoElement:用一个 HTML 的 < video >元素作为你的图片源,可以从视频中抓取当前帧作为一个图像。
  • HTMLCanvasElement:可以使用另一个 < canvas > 元素作为你的图片源。

在这里插入图片描述



Document

你的浏览器不兼容Canvas,请升级您的浏览器!


Canvas绘画状态-保存和恢复

Canvas绘画状态

  • 是当前绘画时所产生的样式和变形的一个快照。
  • Canvas在绘画时,会产生相应的绘画状态,其实我们是可以将某些绘画的状态存储在栈中来为以后复用。
  • Canvas 绘画状态的可以调用 save 和 restore 方法是用来保存和恢复,这两个方法都没有参数,并且它们是成对存在的
    保存和恢复(Canvas)绘画状态
  • save():保存画布 (canvas) 的所有绘画状态
  • restore():恢复画布 (canvas) 的所有绘画状态
    Canvas绘画状态包括:
  • 当前应用的变形(即移动,旋转和缩放)
  • 以及这些属性:strokeStyle, fillStyle, globalAlpha, lineWidth, lineCap, lineJoin, miterLimit,shadowOffsetX, shadowOffsetY, shadowBlur, shadowColor, font, textAlign, textBaseline …
  • 当前的裁切路径(clipping path)


Document

你的浏览器不兼容Canvas,请升级您的浏览器!


在这里插入图片描述

变形 Transform

Canvas和CSS3一样也是支持变形,形变是一种更强大的方法,可以将坐标原点移动到另一点、形变可以对网格进行旋转和缩放
Canvas的形变有4种方法实现:

  • translate(x, y):用来移动 canvas 和它的原点到一个不同的位置。
    • x 是左右偏移量,y 是上下偏移量(无需要单位),如右图所示。
  • rotate(angle):用于以原点为中心旋转 canvas,即沿着z轴旋转。
    • angle是旋转的弧度,是顺时针方向,以弧度为单位
  • scale(x, y):用来增减图形在 canvas 中像素数目,对图形进行缩小或放大。
    • x 为水平缩放因子,y 为垂直缩放因子。如果比 1 小,会缩小图形,如果比 1 大会放大图形。默认值为 1,也支持负数。
  • transform(a, b, c, d, e, f): 允许对变形矩阵直接修改。这个方法是将当前的变形矩阵乘上一个基于自身参数的矩阵。
    注意事项:
  • 在做变形之前先调用 save 方法保存状态是一个良好的习惯。
  • 大多数情况下,调用 restore 方法比手动恢复原先的状态要简单得多。
  • 如果在一个循环中做位移但没有保存和恢复canvas状态,很可能到最后会发现有些东西不见了,因为它很可能已超出canvas画布以外了。
  • 形变需要在绘制图形前调用。
    在这里插入图片描述

移动-translate

translate方法,它用来移动 canvas 和它的原点到一个不同的位置。

  • translate(x, y)
    • x 是左右偏移量,y 是上下偏移量(无需单位)。
      移动 canvas 原点的好处
  • 如不使用 translate方法,那么所有矩形默认都将被绘制在相同的(0,0)坐标原点。
  • translate方法可让我们任意放置图形,而不需要手工一个个调整坐标值
    移动矩形案例
  • 第一步:先保存一下canvas当前的状态
  • 第二步:在绘制图形前translate移动画布
  • 第三步:开始绘制图形,并填充颜色

在这里插入图片描述



Document

你的浏览器不兼容Canvas,请升级您的浏览器!


在这里插入图片描述

旋转-rotate

rotate方法,它用于以原点为中心旋转 canvas,即沿着 z轴 旋转。

  • rotate(angle)
    • 只接受一个参数:旋转的角度 (angle),它是顺时针方向,以弧度为单位的值。
    • 角度与弧度的 JS 表达式:弧度=( Math.PI / 180 ) * 角度 ,即 1角度 = Math.PI/180 个弧度
    • 比如:旋转90°:Math.PI / 2; 旋转180°:Math.PI ; 旋转360°:Math.PI * 2; 旋转-90°:-Math.PI / 2;
    • 旋转的中心点始终是 canvas 的原坐标点,如果要改变它,我们需要用到 translate方法。
      旋转案例
  • 第一步:先保存一下Canvas当前的状态,并确定旋转原点
  • 第二步:在绘制图形前旋转画布(坐标系会跟着旋转了)
  • 第三步:开始绘制图形,并填充颜色
    在这里插入图片描述
    在这里插入图片描述


Document

你的浏览器不兼容Canvas,请升级您的浏览器!


在这里插入图片描述

缩放-scale

**scale方法可以缩放画布。**可用它来增减图形在 canvas 中的像素数目,对图形进行缩小或者放大

  • scale(x, y)
    • x 为水平缩放因子,y 为垂直缩放因子,也支持负数。
    • 如果比 1 小,会缩小图形,如果比 1 大会放大图形。默认值为 1。
      注意事项
  • 画布初始情况下,是以左上角坐标为原点。如果参数为负实数,相当于以 x 或 y 轴作为对称轴镜像反转。
    • 例如,使用translate(0, canvas.height); scale(1,-1); 以 y 轴作为对称轴镜像反转。
  • 默认情况下,canvas 的 1 个单位为 1 个像素。如果我们设置缩放因子是 0.5,1 个单位就变成对应 0.5 个像素,这样绘制出
    来的形状就会是原先的一半。同理,设置为 2.0 时,1 个单位就对应变成了 2 像素,绘制的结果就是图形放大了 2 倍。
    缩放案例实战
  • 第一步:先保存一下Canvas当前的状态,并确定缩放原点
  • 第二步:在绘制图形前缩放画布
  • 第三步:开始绘制图形,并填充颜色

在这里插入图片描述


Document你的浏览器不兼容Canvas,请升级您的浏览器!

在这里插入图片描述

相关内容

热门资讯

安卓系统小额扣款在哪看 你有没有遇到过这种情况:手机里突然少了点零花钱,却不知道是哪个APP偷偷扣了款?别急,今天就来教你怎...
安卓8系统兼容面具吗 你有没有想过,你的安卓8系统手机能不能装上那些酷炫的面具应用呢?这可是个让人心头一紧的问题,毕竟谁不...
安卓手机系统升级流程,从准备到... 你有没有发现,你的安卓手机最近总是时不时地提醒你系统要升级啦?是不是有点小激动,又有点小紧张呢?别急...
51虚拟机安卓系统,功能解析与... 你有没有想过,在手机上也能体验到电脑的强大功能呢?没错,这就是51虚拟机安卓系统的魅力所在!今天,就...
王者安卓苹果互通系统,安卓苹果... 哇,你知道吗?最近在游戏界可是掀起了一股热潮,那就是《王者荣耀》的安卓和苹果互通系统!是不是听起来就...
黑苹果单系统安卓,黑苹果单系统... 亲爱的读者们,你是否曾梦想过拥有一台既能运行Windows系统,又能畅玩安卓应用的电脑呢?今天,就让...
安卓系统怎么开启隐藏键,安卓系... 你有没有发现安卓手机里藏着一些小秘密呢?比如那些隐藏的键,它们就像手机里的宝藏,等着你去发现和开启。...
华为安卓系统开机页面,科技美学... 亲爱的读者,你是否曾好奇过,当你按下华为手机的开机键,那独特的安卓系统开机页面背后隐藏着怎样的故事?...
安卓系统手机号标记,一键识别号... 你有没有发现,现在用安卓系统手机的人越来越多了呢?手机号标记这个功能,简直就是咱们日常生活中的小帮手...
鸿蒙5.0系统和安卓区别,系统... 你知道吗?最近手机圈子里可是炸开了锅,因为华为的新操作系统鸿蒙5.0系统终于发布了!这可是个大新闻,...
安装安卓系统套件的软件,软件应... 你有没有想过,给你的手机换换口味?是的,就是那种从iOS跳到安卓的感觉,是不是听起来就有点小刺激呢?...
安卓系统各组件怎么安装,安卓系... 你有没有想过,安卓系统里那些神奇的组件是怎么安装到你的手机上的呢?是不是觉得这个过程神秘又复杂?别急...
安卓系统cookie设置阻止,... 你有没有发现,在使用安卓手机的时候,有时候网页会偷偷地跟踪你的浏览记录呢?别担心,今天就来教你怎么设...
2023安卓最流畅系统,性能与... 你有没有发现,手机用久了,就像人一样,开始变得“臃肿”起来?尤其是安卓系统,有时候感觉就像一个老态龙...
安卓子系统的终极玩法,终极玩法... 你有没有发现,安卓系统就像一个巨大的宝藏库,里面藏着无数好玩的游戏和实用的应用?今天,就让我带你一起...
安卓系统主题英文名,探索安卓系... 你有没有发现,手机里的世界其实可以变得五彩斑斓?没错,就是那个我们每天离不开的安卓系统,它就像一个巨...
安卓系统怎么调亮屏幕,安卓系统... 手机屏幕暗暗的,是不是觉得看东西都费劲?别急,今天就来教你怎么轻松调亮安卓系统的屏幕亮度,让你的手机...
手机升级安卓系统包,畅享智能生... 亲爱的手机用户们,你是否也和我一样,对手机升级安卓系统包充满了好奇和期待呢?每次手机系统一更新,我们...
新款cs75安卓系统,新款CS... 你有没有听说?最近汽车界可是炸开了锅,因为一款全新的车型——新款CS75,竟然搭载了安卓系统!这可不...
安卓系统送ios皮肤,体验不一... 你知道吗?最近在手机圈里可是掀起了一股热潮呢!那就是——安卓系统送iOS皮肤。是不是听起来有点不可思...