微信小程序中canvas竟然不支持width与height属性

上图对比,后图明显模糊了。

小程序数据统计页面.png

VS

自己实现的折线图

在PC中可以像这样将width与height设置为css的2倍可以解决retina屏适配,而小程序中不可以,直接将<canvas>中的width与height属性过滤了。

<!DOCTYPE HTML>
<html>
    <body>
        <canvas id="myCanvas" width="2000" height="2000" style="width:1000px;height:1000px;">your browser does not support the canvas tag123213 </canvas>

        <script type="text/javascript">

            var canvas=document.getElementById('myCanvas');
            var ctx=canvas.getContext('2d');
            ctx.fillStyle='#ff6600';
            ctx.fillRect(0,0,500,500);

        </script>
    </body>
</html>

如果对比ppi换算结果不是刚刚2倍的,,可以使用如下的代码来获取ratio值

backingStore = context.backingStorePixelRatio ||
						context.webkitBackingStorePixelRatio ||
						context.mozBackingStorePixelRatio ||
						context.msBackingStorePixelRatio ||
						context.oBackingStorePixelRatio ||
						context.backingStorePixelRatio || 1;

以上代码摘自:https://github.com/jondavidjohn/hidpi-canvas-polyfill

尝试在小程序中去比划比划

<canvas canvas-id="line-canvas" id="line-canvas" tabindex="2" width="750" height="400" style="width: 375px; height: 200px;"></canvas>

结果在Wxml调试窗口成这样了

输入图片说明

w3c说得很清楚,有width与height属性的,为什么不走w3c寻常路呢。http://www.w3school.com.cn/html5/html5_canvas.asp

反观微信团队自己出的小程序数据助手却支持retina屏,为这个问题花了1天时间了,不知道要怎么破了。

转载于:https://my.oschina.net/huangxiujie/blog/901993

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信小程序canvas 可以通过以下方法关闭: 1. 在页面的 JavaScript 代码调用 canvas 的实例的 destroy() 方法,来销毁 canvas。 2. 通过设置 canvas 元素的 style.display 属性为 "none",来隐藏 canvas。 3. 可以在页面 onUnload 生命周期函数调用 canvas 的实例的 destroy() 方法,在页面销毁时自动销毁 canvas。 请注意,关闭 canvas 可以帮助提高小程序的性能和减少内存使用。 ### 回答2: 微信小程序提供了一个叫做canvas的组件,允许开发者在小程序绘制图形、动画和交互效果。当我们想要关闭canvas时,可以采取以下步骤: 1. 停止canvas的绘制:使用wx.createContext()方法创建的画布对象可以调用draw()方法进行绘制。当我们想要关闭canvas时,可以使用该对象的clearRect(x, y, width, height)方法清除画布上的内容,然后调用draw()方法即可停止绘制。 2. 隐藏canvas组件:在小程序的wxml文件,我们可以通过设置canvas组件的hidden属性为true来隐藏它。当hidden属性为true时,canvas组件将不会显示在小程序页面。 3. 销毁canvas对象:如果我们不再需要使用canvas,并且希望释放相关资源,可以调用wx.createContext()方法创建的画布对象的destroy()方法进行销毁。该方法将会销毁该画布对象,并且无法再进行绘制操作。 需要注意的是,在关闭canvas之前,我们需要确保已经保存了需要的数据或者效果,以免关闭后无法再恢复。另外,关闭canvas并不会影响其他组件或功能的正常运行,我们可以根据实际需求来选择是否关闭canvas

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值