网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

Flutter Canvas的多方面探究有哪些细节可以深入挖掘?

GG网络技术分享 2025-10-25 17:05 9


深厚入解析Flutter Canvas的许多方面应用

Canvas在Flutter中是一个有力巨大的绘图工具,它允许开发者以编程方式在屏幕上绘制各种图形和文本。

一、 制作自定义的UI组件

用Canvas,我们能为应用程序创建独特的自定义UI组件。比方说我们能用Canvas创建带有自定义绘图的开关按钮。

class CustomSwitchPainter extends CustomPainter {
  final bool value;
  CustomSwitchPainter;
  @override
  void paint {
    Paint paint = Paint
      ..color = value ? Colors.green : Colors.grey
      ..style = PaintingStyle.fill;
    canvas.drawRRect(
        RRect.fromRectAndRadius, Radius.circular),
        paint);
    double switchWidth = size.width / 3;
    double offset = value ? size.width - switchWidth : 0;
    Paint switchPaint = Paint
      ..color = Colors.white
      ..style = PaintingStyle.fill;
    canvas.drawCircle(
      Offset,
      size.height / 3 - 4,
      switchPaint,
    );
  }
  @override
  bool shouldRepaint {
    return true;
  }
}

二、创建游戏

Canvas能用于创建跨平台的2D游戏。比方说我们能用Canvas创建一个轻巧松的飞行射击游戏。

@override
  void paint {
    Rect rect = Rect.fromLTWH;
    Paint paint = Paint;
    paint.color = Colors.red;
    canvas.drawRect;
  }

三、 设置画笔属性

Canvas的Paint类包含一系列用于设置和修改画笔属性的方法和属性,比方说color、strokeWidth、strokeCap、strokeJoin等。

@override
  void paint {
    Paint paint = Paint;
    paint.color = Colors.black;
    paint.strokeWidth = 2;
    paint.strokeCap = StrokeCap.round;
    paint.strokeJoin = StrokeJoin.round;
    canvas.drawLine, paint);
  }

四、 设置绘制文字的属性

在Canvas中,TextPainter类用于绘制文本。能用TextStyle类设置文字的样式,比方说字体颜色、字体巨大细小、字体样式等。

@override
  void paint {
    Rect rect = Rect.fromLTWH;
    Paint paint = Paint;
    canvas.save;
    canvas.translate;
    canvas.rotate;
    canvas.scale;
    canvas.drawRect;
    canvas.restore;
  }

五、 Canvas的应用

Canvas能用于很许多应用场景,比方说绘制图表,制作自定义的UI组件,创建游戏等。

说实在的, 基本上原因是正常Flutter在绘制Container的时候,AppBar已经帮我们计算了状态栏和标题栏高大度偏差,但我们这里在用Canvas时直接粗暴的drawRect,绘制出来的红色细小方框,左部和顶部起点均为0,其实是从状态栏开头计算绘制的。那如果我们调整位置呢?把起点top调整到300,出现了如下图的效果:纳尼?

红色细小方块居然画出去了明明Container只有绿色的巨大细小。其实这里的问题还是在于PaintingContext, 它有一个参数是estimatedBounds,而estimatedBounds正常是在创建时通过child.paintBounds赋值的,但是对于estimatedBounds还有如下的说说:原来画出去也是能。

六、Matrix变换

用Matrix能进行Canvas上的几何变换。常用的变换包括平移,旋转,缩放。

文章浏览阅读2.1k次点赞13次收藏21次。本文聚焦Flutter开发中Canvas绘图。Canvas作为绘制2D图形工具,可绘制许多种元素,是CustomPainter子组件。介绍了绘制的保存恢复、 变换、渲染流水线、路径及画笔等内容,还提及在地图线路、AI图像转换等方面的应用。

七、 Canvas的常用图形方法

Canvas的常用图形方法包括drawLine、drawRect、drawCircle、drawArc等。比方说 以下代码演示了怎么用Canvas绘制一个矩形:

@override
  void paint {
    Rect rect = Rect.fromLTWH;
    Paint paint = Paint;
    paint.color = Colors.red;
    canvas.drawRect;
  }

八、Canvas的绘制坐标系

Canvas绘制区域内的坐标系原点在左上角,水平向右为x轴正方向,垂直向下为y轴正方向。

九、 Canvas的绘制操作

Canvas的绘制操作包括绘制线段、绘制点、绘制路径等。以下代码演示了怎么绘制线段:

canvas.drawLine, Offset, paint);

十、Canvas的绘制文本

Canvas的TextPainter类用于绘制文本。以下代码演示了怎么在Canvas中绘制文本:

TextPainter textPainter = TextPainter(
  text: TextSpan),
  textDirection: TextDirection.ltr,
);
textPainter.layout;
textPainter.paint);

十一、Canvas的Matrix变换

十二、 Canvas的绘制方法

Canvas给了一系列用于创建和修改图形的方法和属性,包括绘制点、线、路径、矩形、圆形等。

  • drawLine:绘制线段
  • drawPoints:绘制一系列的点
  • drawRect:绘制矩形
  • drawCircle:绘制圆形
  • drawArc:绘制弧形
  • drawPath:绘制路径

十三、 Canvas的绘制实例

class MyPainter extends CustomPainter {
  @override
  void paint {
    Paint paint = Paint;
    paint.color = Colors.red;
    canvas.drawRect, paint);
  }
  @override
  bool shouldRepaint {
    return true;
  }
}

Canvas是Flutter中一个有力巨大的绘图工具,它允许开发者以编程方式在屏幕上绘制各种图形和文本。通过学和掌握Canvas的用,开发者能创建出丰有钱许多彩的UI组件和游戏。

十五、 Canvas的绘制预测

因为Flutter的不断进步,Canvas的功能将更加丰有钱和有力巨大。以后我们能期待Canvas在更许多场景下的应用,如AR/VR、地图渲染等。

欢迎用实际体验验证观点。

标签:

提交需求或反馈

Demand feedback