wxml代码:
<view class="result-page">
<canvas canvas-id=\'firstCanvas\' style=\'width:100%;height:500px;margin: 0;padding: 0;display: block;background-color:#eeeeee\'></canvas>
<view class=\'footer\'>
<view class=\'btn-layout\'>
<button class=\'btn-pierced btn-width\' bindtap="returnIndex">换个名字测</button>
</view>
<view class=\'btn-layout\'>
<button class=\'btn btn-layout btn-width\' bindtap="saveImage">保存图片</button>
</view>
</view>
</view>
js代码:
var contex = wx.createCanvasContext(\'firstCanvas\')
var avatarurl_width = 100; //绘制的头像宽度
var avatarurl_heigth = 100; //绘制的头像高度
var avatarurl_x = 50; //绘制的头像在画布上的位置
var avatarurl_y = 50; //绘制的头像在画布上的位置
contex.save();
contex.beginPath(); //开始绘制
//先画个圆 前两个参数确定了圆心 (x,y) 坐标 第三个参数是圆的半径 四参数是绘图方向 默认是false,即顺时针
contex.arc(avatarurl_width / 2 + avatarurl_x, avatarurl_heigth / 2 + avatarurl_y, avatarurl_width / 2, 0, Math.PI * 2, false);
contex.clip();//画好了圆 剪切 原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内 这也是我们要save上下文的原因
contex.drawImage(\'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2369419058,1797305489&fm=27&gp=0.jpg\', avatarurl_x, avatarurl_y, avatarurl_width, avatarurl_heigth); // 推进去图片,必须是https图片
contex.restore(); //恢复之前保存的绘图上下文 恢复之前保存的绘图上下午即状态 还可以继续绘制
contex.draw(); //可将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中
原图地址:
实现效果: