canvas常用API介绍

官方文档:https://www.canvasapi.cn/

 

 

1. Canvas API

Canvas API 提供了一个通过JavaScript 和 HTML<canvas>元素来绘制图形的方式。它可以用于动画、游戏画面、数据可视化、图片编辑以及实时视频处理等方面。

在html里的形式是:

<canvas id="canvas"></canvas>

js里:
Document.getElementById() 方法获取HTML <canvas> 元素的引用。接着,HTMLCanvasElement.getContext() 方法获取这个元素的context——图像稍后将在此被渲染。

2. <canvas>

<canvas>元素可被用来通过JavaScriptCanvas API 或 WebGL API)绘制图形及图形动画。

canvas元素的属性:

属性名含义
height 该元素占用空间的高度 以 CSS 像素(px)表示,默认为 150
width 该元素占用空间的宽度 以 CSS 像素(px)表示,默认为 300
getContext()    
toDataURL(type, encoderOptions) 返回一个数据URL,该URL包含由类型参数指定的格式的图像(默认为png) encoderOptions在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量
toBlob(callback, type, encoderOptions) 回调函数,可获得一个单独的Blob对象参数 其余两个参数含义同上

注意

  1. 需要有闭合标签
  2. 直接在html标签中设置width和height属性或者使用JavaScript来指定画布尺寸
  3. 使用CSS的width和height以在渲染期间缩放图像以适应样式大小,只是让画布缩放而已。

3. CanvasRenderingContext2D

通过HTMLCanvasElement.getContext('2d')方法可以获得CanvasRenderingContext2D对象;
可为<canvas>元素的绘图表面提供2D渲染上下文。 它用于绘制形状,文本,图像和其他对象。

// html
<canvas id="my-house" width="300" height="300"></canvas>
// js
const canvas = document.getElementById('my-house');
const ctx = canvas.getContext('2d'); // CanvasRenderingContext2D对象

有了CanvasRenderingContext2D上下文对象,就可以绘制自己想要的内容了

先来回顾一下最常用最简单的属性和方法:

线条相关

属性名作用默认值
lineWidth 线的宽度 1
lineCap 线末端的类型 butt, round , square(以正方形结尾,视觉上比butt长一点)
lineJoin 两线相交拐点类型 miter, round,bevel
miterLimit 斜接面限制比例 10
setLineDash([]) 设置当前的线段样式 数组里的值依次对应虚线的线段和空白的长度,依次重复
lineDashOffset(offset) 从哪里开始绘制线  

绘制矩形

属性名作用默认值
clearRect 擦除指定矩形区域的内容  
fillRect(x, y, width, height) 绘制填充矩形  
strokeRect(x, y, width, height) 使用当前的绘画样式,描绘一个矩形  

 

路径

属性名作用默认值
beginPath() 清空路径列表,开始一个新的路径  
closePath() 使笔点返回到当前自路径的起始点  
moveTo(x, y) 将一个新的子路径的起始点移动到指定坐标  
lineTo(x, y) 链接到指定坐标  
arc(x, y, r, startAngle, endAngle, 是否逆时针) 绘制一段圆弧  
arcTo(x1, y1, x2, y2, r) 绘制两个点之间半径为r的圆弧  
rect(x, y, width, height) 绘制一个矩形,可以通过fill或者stroke来填充或描边  
bezierCurveTo() 贝塞尔曲线  

 

绘制路径

属性名作用默认值
fill() 填充路径  
stroke() 描边路径  
clip() 将当前创建的路径设置为当前剪切路径的方法

 

填充和描边

属性名作用默认值
fillStyle    
strokeStyle  

 

渐变

返回的CanvasGradient对象的addColorStop(offset, color)添加渐变颜色

属性名作用默认值
createLinearGradient(x0, y0, x1, y1) 创建一个沿参数坐标指定的直线的渐变。该方法返回一个线性 对象 返回值可以作为描边或者填充的值使用
createRadialGradient(x0, y0, r0, x1, y1, r1) 确定两个圆的坐标,放射性渐变  

 

图案
返回CanvasPattern对象,可以把此模式赋值给当前的fillStyle等,在 canvas 上绘制出效果

属性名作用默认值
createPattern(image, repetition)用指定的图片创建图案
image可以是图片,视频,canvas的Element,或者canvas上下文,ImageData,Blob, ImageBitmap; repetition是重复方式,跟css里的背景图片重复参数一样

 

绘制文本

 

文本样式

 

阴影

 

 

变换

合成

属性名作用默认值
globalAlpha 合成到canvas之前,设置图形和图像的透明度  
globalCompositeOperation 设置如何在已经存在的位图上绘制图形和图像 详细用法

 

绘制图像

像素控制

 

 

canvas状态

 

以上加粗的api是我经常看到或者使用的,其他更多的可以看MDN的介绍

https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D

 

 

 

转自:https://blog.csdn.net/haoyanyu_/article/details/108509098

 

posted @   SimoonJia  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示