drawCrossLine method
画交叉线
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);
}