EA&UML日拱一卒-0基础学习微信小程序(15)-弄得像真的一样

光显示数字当然没什么意思,我们稍加修改,争取把这个小程序弄的像真的一样。


创建/添加图像资源


首先用Word画,然后转换成png。


EA&UML日拱一卒-0基础学习微信小程序(15)-弄得像真的一样


接下来在小程序工程中添加images目录,将png文件拷贝到该目录中。


index.wxml


<!--index.wxml-->

<view class="container">

 <!-- canvas.wxml -->

 <canvas style="width: 300px; height: 300px;" canvas-id="compassCanvas"></canvas>

 <view class="usermotto">

   <text class="angle_text">{{angle}}</text>

 </view>

</view>


添加一个名为compassCanvas,宽和高都是300px的canvas.


index.js


//logs.js

Page({

 data: {

   angle: '--',  

 },


 //指南针描画

 drawCompass: function (direction) {

   var center_x = 150

   var center_y = 150


   // 使用 wx.createContext 获取绘图上下文 context

   var context = wx.createCanvasContext('compassCanvas')


   //根据角度旋转坐标系

   context.translate(center_x, center_y);

   context.rotate(-direction / 180 * Math.PI);

   context.translate(-center_x, -center_y);

   //描画方向转盘

   context.drawImage('../../images/compass-1.png', 0, 0,

                     center_x * 2, center_y * 2)


   //恢复坐标系

   context.translate(center_x, center_y);

   context.rotate(direction / 180 * Math.PI);

   context.translate(-center_x, -center_y);

 

   //描画指针。

   context.beginPath()

   context.setLineWidth(5)

   context.setStrokeStyle('red')

   context.moveTo(140, 112)

   context.lineTo(150, 60)

   context.lineTo(160, 112)

   context.closePath()

   context.stroke()


   context.draw()

 },


 //事件处理函数

 onLoad: function () {

   var that = this;

   wx.onCompassChange(function (res) {

     //保留1位小数

     var direction = res.direction.toFixed(1) + '°';

     that.setData({ angle: direction})

     that.drawCompass(res.direction);

   }); 

 },

})

drawCompass函数

首先通过以canvas中心为轴旋转坐标系,旋转角度角度是负的罗盘角度。这里包含了一个角度到弧度的转换。接下来描画指南针表盘就简单了。

在这个小程序中,表盘转而指针不动,所以首先将坐标系再转回来,最后描画指针。

onLoad函数

在onCompassChange的处理函数中,除了设定angle数据之外,同时调用的上面的drawCompass函数。

动作视频:观看请点这里

虽然说要弄得和真的一样,但这毕竟只是一个练习,我们见好就收,点到为止。


参考资料


canvas绘图接口:

https://mp.weixin.qq.com/debug/wxadoc/dev/api/canvas/reference.html

写在文章的最后

既然已经读到这里了,拜托大家再用一分钟时间,将文章转发到各位的朋友圈,微信群中。本公众号的成长需要您的支持!

以上就是今天的文章,欢迎点赞并推荐给您的朋友!

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

EA&UML日拱一卒-0基础学习微信小程序(15)-弄得像真的一样