draw method

  1. @override
void draw(
  1. Canvas canvas,
  2. Size size,
  3. double scaleX,
  4. double scrollX,
  5. double getX(
    1. double
    ),
  6. double getY(
    1. double
    ),
)
override

Implementation

@override
void draw(Canvas canvas, Size size, double scaleX, double scrollX,
    double Function(double) getX, double Function(double) getY) {
  if (startPoint == null || endPoint == null) return;

  final paint = Paint()
    ..color = color
    ..strokeWidth = strokeWidth
    ..style = PaintingStyle.stroke;

  // 绘制趋势线
  canvas.drawLine(startPoint!, endPoint!, paint);

  // 计算并显示角度
  if (angle != null) {
    final center = Offset((startPoint!.dx + endPoint!.dx) / 2,
        (startPoint!.dy + endPoint!.dy) / 2);
    final textPainter = TextPainter(
      text: TextSpan(
        text: '${angle!.toStringAsFixed(1)}°',
        style: TextStyle(color: color, fontSize: 12),
      ),
      textDirection: TextDirection.ltr,
    );
    textPainter.layout();
    textPainter.paint(canvas,
        center - Offset(textPainter.width / 2, textPainter.height / 2));
  }
}