canvas绘制图片不显示以及模糊问题

canvas绘制图片时需要等待图片加载完后才能进行绘制

context.drawImage(img,x,y,width,height);

来自菜鸟的对照表:

img规定要使用的图像、画布或视频。 
sx可选。开始剪切的 x 坐标位置。
sy可选。开始剪切的 y 坐标位置。
swidth可选。被剪切图像的宽度。
sheight可选。被剪切图像的高度。
x在画布上放置图像的 x 坐标位置。
y在画布上放置图像的 y 坐标位置。
width可选。要使用的图像的宽度(伸展或缩小图像)。
height可选。要使用的图像的高度(伸展或缩小图像)。
        for (const key in lists) {
            let item = lists[key];
            ctx.save();
            let xzImg=new Image();
                xzImg.src=``;// 图片地址
            // 需要等待图片加载完成之后再进行绘制图片
            xzImg.onload = function(){
                ctx.drawImage(xzImg, item[0], item[1], 12, 12);
                ctx.stroke(); // Draw it
             }
        }

canvas模糊问题:下面代码亲测显示得十分清晰!

    makeHighRes(canvas) {
        var ctx = canvas.getContext('2d');       
        var dpr = window.devicePixelRatio || window.webkitDevicePixelRatio || window.mozDevicePixelRatio || 1;
        var oldWidth = canvas.width;
        var oldHeight = canvas.height;
        canvas.width = Math.round(oldWidth * dpr);
        canvas.height = Math.round(oldHeight * dpr);
        canvas.style.width = oldWidth + 'px';
        canvas.style.height = oldHeight + 'px';
        ctx.scale(dpr, dpr);
        return ctx;
    },

也可以使用 hidpi-canvas-polyfill画图,原理跟上面的一致

参考:https://www.html5rocks.com/en/tutorials/canvas/hidpi/?redirect_from_locale=zh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值