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) {
  debugPrint(
      'HorizontalRayTool.draw: yPosition=$yPosition, centerX=$centerX, 状态=$state');

  if (yPosition == null || centerX == null) return;

  final paint = Paint()
    ..color = color.withOpacity(state == DrawingToolState.drawing ? 0.6 : 1.0)
    ..strokeWidth = strokeWidth
    ..style = PaintingStyle.stroke;

  // 水平射线从右边界到中心点绘制
  final startPoint = Offset(size.width, yPosition!);
  final endPoint = Offset(centerX!, yPosition!);

  debugPrint('绘制水平射线: 从右边 $startPoint 到中心点 $endPoint');

  // 如果是预览状态,绘制虚线
  if (state == DrawingToolState.drawing) {
    _drawDashedLine(canvas, startPoint, endPoint, paint);
  } else {
    canvas.drawLine(startPoint, endPoint, paint);
  }

  // 在右侧绘制价格标签(显示实际的价格值)
  if (state != DrawingToolState.drawing && priceValue != null) {
    _drawPriceLabel(canvas, size, priceValue!);
  }
}