drawXIntervalSegmentation static method
void
drawXIntervalSegmentation()
Implementation
static void drawXIntervalSegmentation(
Canvas canvas,
List<SectionBean> xSectionBeans,
double startX,
double endX,
double startY,
double endY) {
var _fixedWidth = endX - startX;
for (var item in xSectionBeans) {
var tempStartX = _fixedWidth * item.startRatio + startX;
var tempWidth = _fixedWidth * item.widthRatio;
var tempPath = Path()
..moveTo(tempStartX, endY)
..lineTo(tempStartX + tempWidth, endY)
..lineTo(tempStartX + tempWidth, startY)
..lineTo(tempStartX, startY)
..lineTo(tempStartX, endY)
..close();
var tempPaint = Paint()
..isAntiAlias = true
..strokeWidth = item.borderWidth ?? 1
..color = item.fillColor!
..style = PaintingStyle.fill;
canvas.drawPath(tempPath, tempPaint);
//边缘线
var borderLinePaint = Paint()
..isAntiAlias = true
..strokeWidth = item.borderWidth ?? 1
..color = item.borderColor ?? Colors.transparent
..style = PaintingStyle.stroke;
var borderLinePath1 = Path()
..moveTo(tempStartX, endY)
..lineTo(tempStartX, startY);
var borderLinePath2 = Path()
..moveTo(tempStartX + tempWidth, endY)
..lineTo(tempStartX + tempWidth, startY);
if (item.isBorderSolid) {
canvas.drawPath(borderLinePath1, borderLinePaint);
canvas.drawPath(borderLinePath2, borderLinePaint);
} else {
canvas.drawPath(
dashPath(
borderLinePath1,
dashArray: CircularIntervalList<double>(<double>[5.0, 4.0]),
),
borderLinePaint,
);
canvas.drawPath(
dashPath(
borderLinePath2,
dashArray: CircularIntervalList<double>(<double>[5.0, 4.0]),
),
borderLinePaint,
);
}
//文字显示
var tempText = TextPainter(
textAlign: TextAlign.center,
ellipsis: '.',
maxLines: 1,
text: TextSpan(text: item.title, style: item.titleStyle),
textDirection: TextDirection.ltr)
..layout();
//定义在图表上层显示
tempText.paint(
canvas,
Offset(tempStartX + tempWidth / 2 - tempText.width / 2,
endY - tempText.height));
}
}