canvas

2022/3/29

# 基础使用

# 弧形

# 分辨率问题

  • 问题
    • 分辨率问题
    • canvas是画布,设置的宽高是一个设备独立像素的像素点
    • 受dpr影响,一个设备独立像素可能对应多个物理设备像素的像素点
    • 所以像素填充不饱满就会被模糊、有锯齿
  • 解决
    • 获取设备独立像素比例dpr:window.devicePixelRatio
    • 将画布等比放大,同时css对应的宽高不变,画布的像素就会被压缩
    • 再将ctx上下文进行压缩,避免绘制计算错误:ctx.scale(dpr, dpr)

# 动画堆积问题

  • canvas动画一般借助requestAnimationFramesetTimeout / setInterval实现
  • 浏览器收起或看不见时,会导致动画堆积,再回来容易卡顿,清除动画解决

// 离开清除烟花
window.addEventListener("visibilitychange", () => {
    if (document.visibilityState === 'visible') this.fireworks = [];
})
1
2
3
4
5

# Konva

上次更新: 11/1/2024