flutter - Flutter使用CustomPainter绘制倾斜的椭圆形

标签 flutter dart

我正在尝试在Custom Painter中绘制此椭圆形。
Oval
我似乎无法绕过它。我尝试在drawOval()上使用Canvas函数:

    @override
  void paint(Canvas canvas, Size size) {
    final startAngle = -math.pi / 2;
    final sweepAngle = math.pi;
    Offset center = Offset(size.width * 0.5, size.height * 0.5);
    int lineAmount = 10;
    Color paintColor = Color.fromRGBO(250, 154, 210, 1);
    Paint circlePaint = Paint()
      ..color = paintColor
      ..style = PaintingStyle.stroke
      ..strokeWidth = 5;

    // HIGHLIGHT
    canvas.drawOval(Rect.fromLTRB(50, 100, 250, 200), circlePaint);
    
  }
...并使用drawArc()函数:
canvas.drawArc(Rect.fromLTRB(50, 100, 250, 200), startAngle, sweepAngle,
        false, circlePaint);
canvas.drawArc(Rect.fromLTRB(50, 100, 250, 200), -startAngle, -sweepAngle,
        false, circlePaint);
这是我不断得到的结果:
result
如何正确绘制圆弧?

最佳答案

作为一种选择,您可以使用 Canvas 转换-平移和旋转
像这样:

  @override
  void paint(Canvas canvas, Size size) {
    final angle = -math.pi / 4;
    Color paintColor = Color.fromRGBO(250, 154, 210, 1);
    Paint circlePaint = Paint()
      ..color = paintColor
      ..style = PaintingStyle.stroke
      ..strokeWidth = 5;

    canvas.save();
    canvas.translate(size.width * 0.5, size.height * 0.5);
    canvas.rotate(angle);
    canvas.drawOval(Rect.fromCenter(center: Offset.zero, width: 50, height: 100), circlePaint);
    canvas.restore();
  }
enter image description here

关于flutter - Flutter使用CustomPainter绘制倾斜的椭圆形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63052702/

相关文章:

dom - 在 Dart 中获取 Element 的全局/文档坐标(又名 $ ('some' ).offset())

firebase - 是否可以获取其子集合包含特定文档 ID 的所有文档?

layout - 使用 Align 或使用 Positioned flutter 有什么区别

android - 在flutter中的runApp之前Firebase初始化App需要花费大量时间

flutter - Flutter提供者之间的相互依赖性

data-binding - 对 Polymer 中的数据绑定(bind)引起的 DOM 变化使用react

dart - 仅运行 flutter 桌面应用程序的单个实例

flutter - Dart/Flutter-如何在格式化值时避免通过NumberFormat.compactCurrency(locale: “en_IN”).format()方法完成的自动舍入?

dart - 如何从毫秒(从纪元开始)获取日期?

angularjs - Angular.Dart 中 ngTransclude 的模拟