【微信小程序】 canvas控件与html中canvas的不同

在微信小程序中也拥有和html中作用相同的canvas控件

在一次使用过程中 需要在绘制的图上显示文字 但出现了问题

使用以下两种结构 绘图始终会盖在文字上层

<canvas></canvas> 
<view> </view>
<canvas>
<view> </view>
</canvas> 

canvas及view均设置了position:absolute属性
且canvas的z-index:2 view的z-index:3

该结构在html中可以正常使用

后发现无论如何设置z轴 向其上增加多少各种类型的控件 canvas始终显示在最上

微信小程序的canvas存在即拥有最高层级且无法被二设

==============================================================

在一次绘制扇形进度条的时候 进行如下绘制

          cxt_arc_bg.arc(106, 106, 80, -Math.PI/2,Math.PI*2, false); 
          cxt_arc_bg.lineTo(106, 106)
          cxt_arc_bg.setFillStyle('#aaaaaa');
          cxt_arc_bg.fill();
          cxt_arc_bg.draw();

          cxt_arc.arc(106, 106, 80, -Math.PI/2, Math.PI/180*360*deal_list[i].progress_point/100-Math.PI/2, false); 
          cxt_arc.lineTo(106, 106);  
          cxt_arc.setFillStyle('#FEAE1B');
          cxt_arc.fill();
          cxt_arc.draw();

cxt_arc_bg为背景灰色整圆 cxt_arc显示进度占比的扇形

编译后却发现背景始终只显示1/4扇形

检查后发现cxt_arc_bg.arc(106, 106, 80, -Math.PI/2,Math.PI*2, false); 这句中的结束弧度是有问题的

在html中若这样绘制 会显示一个整圆再多1/4扇形 由于没有颜色叠加 最后显示的还是一个整圆,而在微信小程序中 当弧度绘制超过Math.PI*2后会从0开始重新绘制 所以就会只显示了1/4扇形

改为下面这样就可以了

          cxt_arc_bg.arc(106, 106, 80, -Math.PI/2,Math.PI*2-Math.PI/2, false); 
          cxt_arc_bg.lineTo(106, 106)
          cxt_arc_bg.setFillStyle('#aaaaaa');
          cxt_arc_bg.fill();
          cxt_arc_bg.draw();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值