在 Flutter 中,绘制自定义形状主要通过 CustomPaint 和 CustomPainter 实现。以下是步骤和示例:
1. 使用 CustomPaint 组件
CustomPaint 是一个 widget,它提供一个画布供自定义绘制。主要属性:
painter:背景绘制(在子组件下方)。
foregroundPainter:前景绘制(在子组件上方)。
size:画布尺寸。
2. 创建自定义 CustomPainter
继承 CustomPainter 并实现 paint 和 shouldRepaint 方法:
paint(Canvas canvas, Size size):使用 Canvas 绘制图形。
shouldRepaint:决定是否重新绘制。
3. 绘制方法
Canvas 提供多种绘制方法:
drawPath:绘制路径(用于复杂形状)。
drawRect、drawCircle、drawOval:绘制基本形状。
drawLine:绘制线条。
示例:绘制自定义三角形
import 'package:flutter/material.dart';
class TrianglePainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
final paint = Paint()
..color = Colors.blue
..style = PaintingStyle.fill;
final path = Path();
path.moveTo(size.width / 2, 0); // 顶点
path.lineTo(0, size.height); // 左下角
path.lineTo(size.width, size.height); // 右下角
path.close(); // 闭合路径
canvas.drawPath(path, paint);
}
@override
bool shouldRepaint(covariant CustomPainter oldDelegate) => false;
}
// 使用
CustomPaint(
size: Size(100, 100),
painter: TrianglePainter(),
)
其他形状
- 圆形:
canvas.drawCircle(Offset(x, y), radius, paint)
- 矩形:
canvas.drawRect(Rect.fromLTRB(left, top, right, bottom), paint)
- 自定义路径:使用
Path 的 lineTo、cubicTo 等方法组合。
注意事项
- 使用
Path 时,通过 moveTo 设置起点,lineTo 连接点,close 闭合图形。
- 调整
Paint 的属性(如颜色、描边、抗锯齿)控制样式。
通过组合这些方法,可以绘制任意自定义形状。