dart - 如何更改 Flutter 中自定义绘画的来源?

标签 dart flutter

CustomPaint 代码:

return new Scaffold(
  body:
     new GestureDetector(
        onTap: () {
          debugPrint("hello");
        },
        child:
            new Container(
                alignment: FractionalOffset.center,
                child: new CustomPaint(

                     size: new Size(400.0, 400.0),
                     painter: new BarChartPainter(currentHeight),
    ))),
); 


  //x axis code 
  canvas.drawLine(new Offset(0.0, 0.0), new Offset(500.0, 0.0), paintAx);```

x 轴代码将绘制从 (0,0) 到 (500,0) 的线,位于 Paint 框的顶部。原点位于框的左上角。如何更改原点,使 (0,0) 位于颜料盒的左下方?

截图如下: enter image description here

最佳答案

只需在 Canvas 中使用翻译方法:canvas.translate(0, size.height)。但请注意,在这种情况下,您需要在 y 轴上使用负值。

如果你想让你的 Canvas 坐标表现得像一个经典的图形,使用方法scale:

  @override
  void paint(Canvas canvas, Size size) {
    canvas.translate(0, size.height);
    canvas.scale(1, -1);
    final paint = Paint();
    paint.color = Colors.black;
    canvas.drawLine(Offset.zero, Offset(500, 500), paint);
  }


关于dart - 如何更改 Flutter 中自定义绘画的来源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46941598/

相关文章:

flutter - 如何使用从共享首选项json文件中获取的数据的返回值作为参数

google-maps - 基于 Json 文件在 google map 中包含 flutter 标记

firebase - Flutter如何使用Future返回值作为变量

firebase - 有没有办法让 firebase 实时数据库存在系统更快地检测到断开连接

dart - Flutter 有数据绑定(bind)吗?

flutter - Google地方信息自动填充未显示结果

stream - Dart中的StreamTransformer被跳过了吗?

ecmascript-6 - Google Dart是否支持ES6代理?

dart - Flutter showDialog、AlertDialog背景渐变。

dart - 如何向 firestore 中的现有数组添加或删除项目?