Canvas局部刷新的关键是精准识别并仅重绘脏区计算最小包围矩形、合并多变区域、用clearRect精确擦除、结合离屏缓存静态内容、跳过不可见或未变更绘制。Canvas局部刷新的关键不是“重绘整个画布”而是精准识别并仅重绘真正发生变化的区域同时避免因频繁清空导致的闪烁或性能浪费。明确脏区Dirty Region边界每次状态变更如图形移动、颜色更新、文字重写时不直接绘制而是计算其影响范围——即最小包围矩形Bounding Box。例如一个半径为10的圆从(50,50)移到(80,60)脏区就是以(40,40)为左上、(90,70)为右下构成的矩形。多个变化可合并为一个联合矩形用 unionRect 逻辑处理维护一个 dirtyRect {x, y, width, height} 对象初始为 null 每次需更新时调用 markDirty(x, y, w, h)将其与当前脏区合并 合并逻辑取 min(x), min(y), max(xw)?min(x), max(yh)?min(y)用 clearRect 精确擦除脏区而非清空全画布全量 clearRect(0, 0, canvas.width, canvas.height) 是性能杀手。只清除脏区能显著减少 GPU 填充开销尤其在大画布或高刷新率场景下执行重绘前先 ctx.clearRect(dirtyRect.x, dirtyRect.y, dirtyRect.width, dirtyRect.height) 注意若脏区内有半透明叠加或阴影单纯 clearRect 可能破坏混合效果——此时应采用“离屏缓存合成”策略见下一条 确保脏区坐标已做整数对齐Math.floor避免 sub-pixel 清除引发抗锯齿异常分层离屏 Canvas 缓存静态内容将不变或低频变化的部分如背景网格、UI 边框、底图绘制到一个离屏 canvasoffscreenCtx主画布只负责动态元素。局部刷新时 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。