面试题答案
一键面试- 主要类:
CustomPainter
:这是一个抽象类,用于定义自定义的绘制逻辑。我们需要创建一个继承自CustomPainter
的类,在其中实现绘制方法。Canvas
:用于执行实际的绘制操作,它提供了一系列绘制图形的方法。Paint
:用于描述绘制图形的样式,如颜色、线宽等。
- 基本流程:
- 创建继承自
CustomPainter
的类:class RectanglePainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { // 绘制逻辑将在此处编写 } @override bool shouldRepaint(covariant CustomPainter oldDelegate) { return false; } }
- 在
paint
方法中绘制矩形:
这里先创建了一个class RectanglePainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { Paint paint = Paint() ..color = Colors.blue ..style = PaintingStyle.fill; Rect rect = Rect.fromLTWH(100, 100, 200, 150); canvas.drawRect(rect, paint); } @override bool shouldRepaint(covariant CustomPainter oldDelegate) { return false; } }
Paint
对象,设置其颜色为蓝色并填充样式。然后定义了一个矩形Rect
,通过fromLTWH
方法指定其左上角坐标及宽高。最后使用Canvas
的drawRect
方法在画布上绘制矩形。 - 在Flutter组件中使用自定义绘制:
通过class RectanglePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( body: CustomPaint( painter: RectanglePainter(), ), ); } }
CustomPaint
组件将自定义的RectanglePainter
应用到界面中,从而显示绘制的矩形。
- 创建继承自