canvasKit

canvas工具集

Source:

Methods

(static) aspectFill(ctx, picFile, picInfo, x, y, w, h, bgColoropt)

Source:

绘制图片,保持宽高比居中裁剪,短边完全展示,长边居中截取
说明:
1.应先绘制图片,后填充图片周边内容,否则图片周边长边方向的现有内容会被擦除
2.在开发者工具上图片多余部分无法被清除,但在真机上正常
3.早期小程序canvas不支持clip,所以采用先绘制再擦除的方式实现,导致绘制顺序比较受限,后续考虑改用clip方式实现,待优化

Parameters:
Name Type Attributes Default Description
ctx

wx.createCanvasContext返回的canvas绘图上下文

picFile string

图片临时文件路径

picInfo object

wx.getImageInfo返回的图片原始信息

x number

左上角横坐标

y number

左上角纵坐标

w number

宽度

h number

高度

bgColor string <optional>
"#ffffff"

背景色,裁剪后多余部分用背景色擦除

(static) aspectFit(ctx, picFile, x, y, w, h, bgColor)

Source:

绘制图片,保持图片纵横比,只保证图片的短边能完全显示出来。也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取。

Parameters:
Name Type Description
ctx

wx.createCanvasContext返回的canvas绘图上下文

picFile string

图片临时文件路径

x number

左上角横坐标

y number

左上角纵坐标

w number

宽度

h number

高度

bgColor string

背景色,裁剪后多余部分用背景色填充

(static) borderRadius(ctx, x, y, w, h, radius, bgColoropt)

Source:

将矩形切成圆角矩形
说明:
1.方形区域四角会被填充成指定的背景色,只保留中央圆角矩形区域不变
2.早期小程序canvas不支持clip,所以采用先绘制再擦除的方式实现圆角矩形,只能在纯色背景上使用,现推荐改用 canvasKit.createBorderRadiusPath + ctx.clip 生成圆角矩形/图片/边框式实现,待优化

Parameters:
Name Type Attributes Default Description
ctx

wx.createCanvasContext返回的canvas绘图上下文

x number

矩形左上角横坐标

y number

矩形左上角纵坐标

w number

矩形宽度

h number

矩形高度

radius number

圆角半径

bgColor string <optional>
"#ffffff"

背景色,擦除部分以背景色填充

(static) createBorderRadiusPath(ctx, x, y, w, h, radius)

Source:

生成圆角边框路径,后续可使用该路径绘制圆角矩形、圆角图片、圆角边框等

Parameters:
Name Type Description
ctx

wx.createCanvasContext返回的canvas绘图上下文

x number

矩形左上角横坐标

y number

矩形左上角纵坐标

w number

矩形宽度

h number

矩形高度

radius number

圆角半径

(static) ellipsisStr(str, len, ellipsis) → {string}

Source:

字符串过长截断,1个字母长度计为1,1个汉字长度计为2
更新:

  1. 早期小程序canvas不支持测量文本实际尺寸,所以采用手动粗略计算的方式实现过长处理
  2. 后来小程序canvas提供了measureText接口,支持测量文本实际尺寸信息,本方法待优化
Parameters:
Name Type Description
str string

原字符串

len number

最大长度

ellipsis boolean

过长时截断后是否加'...'

Returns:

截断后字符串

Type
string

(static) fillText(ctx, text, x, y, fontSize, color, lineHeight, textAlign)

Source:

绘制文本,支持\n换行

Parameters:
Name Type Description
ctx

wx.createCanvasContext返回的canvas绘图上下文

text string

文本内容,支持\n换行

x number

文本区域(含行高)左上角横坐标;居中对齐时,改取中点横坐标

y number

文本区域(含行高)左上角纵坐标

fontSize number

字号,单位:px

color string

颜色

lineHeight number

行高

textAlign string

水平对齐方式,支持'left'、'center',其它值没试过

(static) rounded(ctx, x, y, w, bgColoropt)

Source:

将方形区域切成圆形,场景示例:将头像切成圆形展示
说明:
1.方形区域四角会被填充成指定的背景色,只保留中央圆形区域不变
2.早期小程序canvas不支持clip,所以采用先绘制再擦除的方式实现圆形头像,只能在纯色背景上使用,后续考虑改用clip方式实现,待优化

Parameters:
Name Type Attributes Default Description
ctx

wx.createCanvasContext返回的canvas绘图上下文

x number

左上角横坐标

y number

左上角纵坐标

w number

宽度/高度/圆的直径

bgColor string <optional>
"#ffffff"

背景色,擦除部分以背景色填充

(static) strLenGraphic(str) → {number}

Source:

字符串长度,1个字母长度计为1,1个汉字长度计为2
canvas目前似乎不支持获取文本绘制后所占宽度,只能根据字数粗略计算了
更新:

  1. 后来小程序canvas提供了measureText接口,支持测量文本实际尺寸信息,本方法待优化
Parameters:
Name Type Description
str string

字符串

Returns:

总长度

Type
number