drawCrossLine method

void drawCrossLine(
  1. Canvas canvas,
  2. Size size
)
override

画交叉线

Implementation

void drawCrossLine(Canvas canvas, Size size) {
  final index = calculateSelectedX(selectX);
  final point = getItem(index);
  final x = getX(index);
  final y = getMainY(point.close);

  // Draw y line.
  final yStyle = style.select.y;
  final paintY = Paint()
    ..color = yStyle.color
    ..strokeWidth = yStyle.width
    ..isAntiAlias = true;


  if (yStyle.length <= 0 || yStyle.span <= 0) {
    canvas.drawLine(Offset(x, style.main.padding.top), Offset(x, size.height - style.main.padding.bottom), paintY);
  } else {
    double startY = style.main.padding.top;
    final maxY = size.height - style.main.padding.bottom;
    final spaceY = yStyle.length + yStyle.span;
    while (startY < maxY) {
      canvas.drawLine(Offset(x, startY), Offset(x, startY + yStyle.length), paintY);
      startY  += spaceY;
    }
  }

  // Draw x line.
  final xStyle = style.select.x;
  final paintX = Paint()
    ..color = xStyle.color
    ..strokeWidth = xStyle.width
    ..isAntiAlias = true;

  if (xStyle.length <= 0 || xStyle.span <= 0) {
    canvas.drawLine(Offset(-mTranslateX, y), Offset(-mTranslateX + mWidth, y), paintX);
  } else {
    double startX = 0;
    final maxX = -mTranslateX + mWidth;
    final spaceX = xStyle.length + xStyle.span;
    while (startX < maxX) {
      canvas.drawLine(Offset(startX, y), Offset(startX + xStyle.length, y), paintX);
      startX += spaceX;
    }
  }

  // Draw dot.
  final paintD = Paint()
    ..color = style.select.dot.color
    ..strokeWidth = style.select.dot.diameter
    .. isAntiAlias = true;

  canvas.drawOval(Rect.fromCenter(center: Offset(x, y), height: style.select.dot.diameter, width: style.select.dot.diameter), paintD);
}