我想画一条弧线,范围从 0 度到 360 度及以上。当通过 360 度时,我想以某种方式指示用户,可能带有间隙或一些阴影(参见附图,尤其是 360 和 450 示例)。目前,没有任何迹象(图片的左下角)。
目前我正在画这样的戒指:
// full paint
Paint full = Paint()
..color = fullColor
..strokeCap = StrokeCap.round
..style = PaintingStyle.stroke
..strokeWidth = _strokeWidth;
// full
double arcAngle = 2 * pi * (fullPercent / 100);
canvas.drawArc(Rect.fromCircle(center: center, radius: _radius), -pi / 2,
arcAngle, false, full);
我怎样才能实现这样的戒指风格?
更新(根据 mooneer 的回答解决):
// empty
final Offset center = Offset(0.5 * size.width, 0.5 * size.height);
canvas.drawCircle(center, _radius, empty);
double arcAngleStart = -0.5 * pi;
double arcAngleEnd = 2 * pi * (percent % 100 / 100);
if (percent >= 100) {
// full
canvas.drawCircle(center, _radius, full);
// over
canvas.drawArc(Rect.fromCircle(center: center, radius: _radius),
arcAngleStart, arcAngleEnd + 0.0 * pi / 180, false, over);
// arcAngleStart & arcAngleEnd
arcAngleStart -= 0.25 * pi;
arcAngleEnd += 0.25 * pi;
}
// full
canvas.drawArc(Rect.fromCircle(center: center, radius: _radius),
arcAngleStart, arcAngleEnd, false, full);
