收藏
回答

华为mate30 drawImage行为和其他手机不一致?

华为mate30 canvas 2d drawImage行为和其他手机不一致

使用canvas 2d,

const { pixelRatio } = wx.getSystemInfoSync;
canvas.width = res[0].width * pixelRatio;
canvas.height = res[0].height * pixelRatio;

// 华为mate30机型 dx,dy,dWidth, dHeight需要除掉pixelRatio,才会显示正常
ctx.drawImage(img, 100, 100, cw * dpr, ch * dpr, 0, 0, w / pixelRatio, h / pixelRatio);

// 非华为mate30 dx,dy,dWidth, dHeight不需要除掉pixelRatio,就可以显示正常
ctx.drawImage(img, 100, 100, cw * dpr, ch * dpr, -w, 0, w, h);



回答关注问题邀请回答
收藏

1 个回答

  • 武曲心
    武曲心
    2021-05-14

    这说明你的尺寸设置不兼容,注意dpr的影响,没特殊要求可放弃使用dpr做数值变换

    2021-05-14
    有用
    回复 8
    • 2021-05-14
      不用dpr,清晰有影响,清晰度查
      2021-05-14
      回复
    • 武曲心
      武曲心
      2021-05-14回复
      你乘上多少dpr就缩小多少dpr,ctx.scale()
      2021-05-14
      回复
    • 2021-05-14回复武曲心
      这个我一开始就写了,写了还是出现这个机型偏差的问题
      2021-05-14
      回复
    • 武曲心
      武曲心
      2021-05-14回复
      绘制图像时尺寸那画布宽高做参照,dpr不用参与做换算
      2021-05-14
      回复
    • 武曲心
      武曲心
      2021-05-14回复
      定了多大的画布,画多大的图像是画布大小决定的,不是dpr来决定的
      2021-05-14
      回复
    查看更多(3)
登录 后发表内容