diff --git a/docs/chapter10/custom_paint.html b/docs/chapter10/custom_paint.html index 8aebe010..0a1825ba 100644 --- a/docs/chapter10/custom_paint.html +++ b/docs/chapter10/custom_paint.html @@ -33,7 +33,7 @@ this.willChange = false, Widget child, //子节点,可以为空 }) -
1
2
3
4
5
6
7
8
9

可以看到,绘制时我们需要提供前景或背景画笔,两者也可以同时提供。我们的画笔需要继承CustomPainter类,我们在画笔类中实现真正的绘制逻辑。

# 1. 绘制边界 RepaintBoundary

如果CustomPaint有子节点,为了避免子节点不必要的重绘并提高性能,通常情况下都会将子节点包裹在RepaintBoundary组件中,这样会在绘制时就会创建一个新的绘制层(Layer),其子组件将在新的Layer上绘制,而父组件将在原来Layer上绘制,也就是说RepaintBoundary 子组件的绘制将独立于父组件的绘制,RepaintBoundary会隔离其子节点和CustomPaint本身的绘制边界。示例如下:

CustomPaint(
+
1
2
3
4
5
6
7
8
9

可以看到,绘制时我们需要提供前景或背景画笔,两者也可以同时提供。我们的画笔需要继承CustomPainter类,我们在画笔类中实现真正的绘制逻辑。

# 1. 绘制边界 RepaintBoundary

如果CustomPaint有子节点,为了避免子节点不必要的重绘并提高性能,通常情况下都会将子节点包裹在RepaintBoundary组件中,这样会在绘制时就会创建一个新的绘制层(Layer),其子组件将在新的Layer上绘制,而父组件将在原来Layer上绘制,也就是说RepaintBoundary 子组件的绘制将独立于父组件的绘制,RepaintBoundary会隔离其子节点和CustomPaint本身的绘制边界。示例如下:

CustomPaint(
   size: Size(300, 300), //指定画布大小
   painter: MyPainter(),
   child: RepaintBoundary(child:...)),