微信端内置浏览器对canvas的支持有问题

  •  5 关注
  •  1 收藏,2.9k 浏览
0

代码如下:

<canvas id="myCanvas" width="800" height="800" style="display:block;"></canvas>
<script type="text/javascript">    
    var c=document.getElementById("myCanvas");
    var ctx=c.getContext("2d");
    ctx.beginPath();
    ctx.moveTo(0,0);
    ctx.lineTo(400,400);
    ctx.lineWidth=2;
    ctx.strokeStyle= "#ff0000"; 
    ctx.stroke();
</script>

效果如下图所示:

图1 如下图所示是微信端的效果(安卓手机有问题,苹果手机没有问题),

图2 如下图所示是其他浏览器的效果,包括在qq中打开

4 个回答

0
丁亚光 864  2月4日 回答

感觉是你canvas的位置不对,设置html body canvas 的padding margin 都为0 试试

0
王铁手 3.1k  2月4日 回答

感觉微信那边是放大了一样,确定没有缩放页面?

0
mfive 2  3月14日 回答

遇到同样的问题,canvas缩放在iOS上没有问题,在Android微信中打开不能横向缩放,在Android手机上各种浏览器上是正常的,在PC端上用chrome测试也是正常的。

-1
青岛小龟 216  2月5日 回答 · 2月5日 更新

不是安卓和苹果的问题,是屏幕像素比的问题,用window.devicePixelRatio获取到你手机屏幕的像素比,然后对应比例来设置canvas里的参数,而且直接用canvas画图,会很模糊,怎么解决呢,我从网上查阅了一下,自己写了一个函数,你看下

function CanvalHD(canvasThis,ctxThis){
    (function (canvas, ctx) {
        var devicePixelRatio = window.devicePixelRatio || 1;
        var backingStorePixelRatio = ctx.webkitBackingStorePixelRatio ||
                                     ctx.mozBackingStorePixelRatio ||
                                     ctx.msBackingStorePixelRatio ||
                                     ctx.oBackingStorePixelRatio ||
                                     ctx.backingStorePixelRatio || 1;
        var ratio = devicePixelRatio / backingStorePixelRatio;
        if (devicePixelRatio !== backingStorePixelRatio) {
            var oldWidth = canvas.width;
            var oldHeight = canvas.height;
            canvas.width = oldWidth * ratio;
            canvas.height = oldHeight * ratio;
            canvas.style.width = oldWidth + 'px';
            canvas.style.height = oldHeight + 'px';
            ctx.scale(ratio, ratio);
            }
        })(canvasThis, ctxThis);
    }
 

提问者给出的明明是同一个设备,和像素比没有关系吧

#1 王铁手 · 2月5日 · 回复

 
回复 王铁手

他说的是“安卓手机有问题,苹果手机没有问题”,苹果手机的像素比是2,普通的pc显示器是1,有的安卓屏幕是1.5,你可以做个demo试一下,很有意思的哦

#2 青岛小龟 · 2月5日 · 回复

 
回复 青岛小龟

是安卓手机的微信端打开有问题,手机qq端打开、或者用qq浏览器打开都没有问题。而且我刚试了,跟像素比没有关系呢。还有一个很奇怪的现象,在微信端打开第一次、第二次没有问题,第三次打开以后就一直是有问题的。。。

#3 blue_blue · 2月5日 · 回复

 

还有安卓手机中我试了魅族、小米、vivo、华为、联想。发现华为的没有问题。其他的都有问题。

#4 blue_blue · 2月5日 · 回复

 

我感觉是设置canvas的宽度和高度没用,canvas的宽度无论怎么设置,实际表现出来的都只有屏幕大小。

#5 blue_blue · 2月5日 · 回复

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值