HTML5 Canvas

落日映苍穹つ 2023-01-10 13:13 285阅读 0赞

Canvas画布

  • 描述
    • 获取方式
  • 注意点
  • 画布API
  • 上下文API
      • 颜色、样式和阴影
      • 线条样式
      • 矩形
      • 路径
      • 转换
      • 文本
      • 图像绘制
      • 像素操作
      • 合成
      • 其他
  • 补充
    • 栈结构

描述

HTML5 标签用于绘制图像(通过脚本,通常是 JavaScript)。

不过, 元素本身并没有绘制能力(它仅仅是图形的容器) - 必须通过使用JS脚本来完成实际的绘图任务。

获取方式

获取时要检查支持性 代码:.

  1. // An highlighted block
  2. var canvas = document.getElementById("#test");
  3. if(canvas.getContext){
  4. var ctx = canvas.getContext("2d");
  5. }

注意点

  1. canvas图像的渲染有别于HTML图像的渲染 ,canvas的渲染极快,不会出现代码覆盖后延迟渲染的问题;
    写canvas代码一定要具有同步思想
  2. 在获取上下文时,一定要先判断
  3. 画布宽高的问题
    画布的默认宽高300*150
    切记一定要使用HTML的attribute的形式来定义画布的高度
    通过css形式定义会缩放画布内的大小
  4. 绘制矩形的问题
    (1)边框宽度的问题,边框宽度是在偏移量上下分别渲染一半,可能会出现小数边框,一旦出现小数边框都会向上取整
    (2).canvas的api只支持一种图像的直接渲染:矩形

画布API


















canvas自带属性 描述
width 画布的宽度
height 画布高度

上下文API

  • 颜色、样式和阴影


































属性 描述
fillStyle 设置或返回用于填充绘画的颜色、渐变或模式
strokeStyle 设置或返回用于笔触的颜色、渐变或模式
shadowColor 设置或返回用于阴影的颜色
shadowBlur 设置或返回用于阴影的模糊级别
shadowOffsetX 设置或返回阴影距形状的水平距离
shadowOffsetY 设置或返回阴影距形状的垂直距离

























方法 描述
createLinearGradient() 创建线性渐变(用在画布内容上)
createPattern() 在指定的方向上重复指定的元素
createRadialGradient() 创建放射状/环形的渐变(用在画布内容上)
addColorStop() 规定渐变对象中的颜色和停止位置
  • 线条样式


























属性 描述
lineCap 设置或返回线条的结束端点样式
lineJoin 设置或返回两条线相交时,所创建的拐角类型
lineWidth 设置或返回当前的线条宽度
miterLimit 设置或返回最大斜接长度
  • 矩形


























方法 描述
rect() 创建矩形
fillRect() 绘制“被填充”的矩形
strokeRect() 绘制矩形(无填充)
clearRect() 在给定的矩形内清除指定的像素
  • 路径


























































方法 描述
fill() 填充当前绘图(路径)
stroke() 绘制已定义的路径
beginPath() 起始一条路径,或重置当前路径
moveTo() 把路径移动到画布中的指定点,不创建线条
closePath() 创建从当前点回到起始点的路径
lineTo() 添加一个新点,然后在画布中创建从该点到最后指定点的线条
clip() 从原始画布剪切任意形状和尺寸的区域
quadraticCurveTo() 创建二次贝塞尔曲线
bezierCurveTo() 创建三次方贝塞尔曲线
arc() 创建弧/曲线(用于创建圆形或部分圆)
arcTo() 创建两切线之间的弧/曲线
isPointInPath() 如果指定的点位于当前路径中,则返回 true,否则返回 false
  • 转换






























方法 描述
scale() 缩放当前绘图至更大或更小
rotate() 旋转当前绘图
translate() 重新映射画布上的 (0,0) 位置
transform() 替换绘图的当前转换矩阵
setTransform() 将当前转换重置为单位矩阵。然后运行 transform()
  • 文本






















属性 描述
font 设置或返回文本内容的当前字体属性
textAlign 设置或返回文本内容的当前对齐方式
textBaseline 设置或返回在绘制文本时使用的当前文本基线





















方法 描述
fillText() 在画布上绘制“被填充的”文本
strokeText() 在画布上绘制文本(无填充)
measureText() 返回包含指定文本宽度的对象
  • 图像绘制


















方法 描述
drawImage() 向画布上绘制图像、画布或视频
createPattern() 向画布上绘制图像背景
  • 像素操作






















属性 描述
width 返回 ImageData 对象的宽度
height 返回 ImageData 对象的高度
data 返回一个对象,其包含指定的 ImageData 对象的图像数据





















方法 描述
createImageData() 创建新的、空白的 ImageData 对象
getImageData() 返回 ImageData 对象,该对象为画布上指定的矩形复制像素数据
putImageData() 把图像数据(从指定的 ImageData 对象)放回画布上
  • 合成


















属性 描述
globalAlpha 设置或返回绘图的当前 alpha 或透明值
globalCompositeOperation 设置或返回新图像如何绘制到已有的图像上
  • 其他






























方法 描述
save() 保存当前环境的状态
restore() 返回之前保存过的路径状态和属性
getContext() 可返回一个对象,该对象提供了用于在画布上绘图的方法和属性。
createEvent()
toDataURL()

补充

栈结构

模板

  1. ctx.save();//压栈
  2. //填写样式属性
  3. ctx.beginPath();
  4. //填写路径方法
  5. ctx.restore();//弹栈
  1. save()是Canvas 2D API通过将当前状态放入栈中,保存canvas全部状态的方法
  2. 保存到栈中的绘制状态有:

    • 当前的变换矩阵、
    • 当前的剪切区域、
    • 当前的虚线列表、
    • 属性的值(strokeStyle、fillStyle、lineWidth、lineCap、lineJoin…)

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读

    相关 HTML5】——Canvas

    Canvas是HTML5中所有新特性中目前应用最广泛的一个,可以替代引入的图片(图形) 用途:完成HTML页面中的图形绘制,实现网络游戏或单击游戏(网页游戏),在HTML中