// 已完成笔画合成位图 Painter — 从光栅化缓存绘制合成图 // // 每帧仅需 1 次 drawImage 调用,O(1) 开销。 // 与 ActiveStrokePainter 配合,形成双层渲染架构。 import 'dart:ui' as ui; import 'package:flutter/widgets.dart'; /// 已完成笔画合成位图 Painter /// /// 从 StrokeRasterCache 获取合成后的 ui.Image,每帧仅 drawImage。 /// 通过 layerVersion 控制重绘时机:只在缓存更新后重绘。 class CachedStrokesPainter extends CustomPainter { /// 合成后的位图(包含所有已完成笔画) final ui.Image? compositeImage; /// 缓存版本号,驱动 shouldRepaint final int layerVersion; CachedStrokesPainter({ required this.compositeImage, required this.layerVersion, }); @override void paint(Canvas canvas, Size size) { if (compositeImage == null) return; canvas.drawImage(compositeImage!, Offset.zero, Paint()); } @override bool shouldRepaint(covariant CachedStrokesPainter oldDelegate) { return oldDelegate.layerVersion != layerVersion; } }