canvas - 颤振drawArc没有中心点
问题描述
在颤振文档中它的状态,
如果 useCenter 为真,则圆弧向中心闭合,形成一个圆形扇区。否则,圆弧不闭合,形成一个圆段。
我不想使用其中任何一个,我只想绘制曲线的外周长(路径)。为了更好地解释它,我想要实现的是如右图所示。
我知道我可以做填充,但我想要一个透明的中心。我可以使用另一种技术吗?
解决方案
使用Path.arcTo
,或者更简单地说,Canvas.arcTo
使用stroke
风格Paint
import 'dart:math';
import 'package:flutter/material.dart';
class _ArcPainter extends CustomPainter {
_ArcPainter();
@override
bool shouldRepaint(_ArcPainter oldDelegate) {
return true;
}
@override
void paint(Canvas canvas, Size size) {
Rect rect = Rect.fromLTWH(0.0, 0.0, size.width, size.height);
Path path = Path()..arcTo(rect, 0.0, -pi / 2, true);
canvas.drawPath(
path,
Paint()
..color = Colors.orange
..strokeWidth = 3.0
..style = PaintingStyle.stroke);
canvas.drawArc(
rect,
0.0,
pi / 2,
false,
Paint()
..color = Colors.teal
..strokeWidth = 3.0
..style = PaintingStyle.stroke);
}
}
class ArcWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new SizedBox(
width: 250.0,
height: 250.0,
child: new CustomPaint(
painter: new _ArcPainter(),
),
);
}
}
class SegmentDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: AppBar(title: const Text('Arcs etc')),
body: ArcWidget(),
);
}
}
void main() {
runApp(
MaterialApp(
home: SegmentDemo(),
),
);
}
推荐阅读
- sql - 堆的新索引,sql索引中列的顺序重要吗?
- javascript - jQuery:检查是否在一个元素上方和另一个元素下方滚动
- docusignapi - docusign API 是否支持动态 PDF 附件和签名接收字段添加?
- wpf - 将光标拖放到画布上时如何获取最后一个位置
- python - 在 ModelAdmin 中保存模型时如何检查初始数据?
- android - 如何使用 Dagger Android 创建自定义范围并共享相同的实例
- asp.net - 如何在 asp.net 中创建 iCal 订阅服务
- reactjs - 在父组件中获取子组件的 onClick 道具
- react-native - 如何在函数中使用 id 更改组件值或颜色,例如 Text?
- raspberry-pi - Windows iot viewsonic 触摸屏