在 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的属性(如颜色、描边、抗锯齿)控制样式。
通过组合这些方法,可以绘制任意自定义形状。