【flutter】绘制图形

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ivy_doudou/article/details/100132960

1、

CustomPaint(
          child: Text(""),
          painter: MyPainter(),
        ),
class MyPainter extends CustomPainter {

  //最重要的是重新覆盖这两个方法。
  //paint() 中是绘制逻辑,可以在这获得画布 Canvas 和 画布的大小 Size。
  @override
  paint(Canvas canvas, Size size) {
    ///isAntiAlias   bool是否开启抗锯齿,开启抗锯齿能够是边缘平滑,当然也更消耗系统资源
    ///color  Color颜色
    ///colorFilter   ColorFilter会对颜色进行变换
    ///filterQuality   FilterQuality设置绘制的图像质量
    ///invertColors   bool是否使用反向颜色。绘制图片时也能够反转图片的颜色
    ///maskFilter   MaskFilter设置遮罩效果。比如高斯模糊
    ///shader   Shader渐变颜色。会覆盖color
    ///strokeCap   StrokeCap设置绘制形状的边缘风格。如圆角、方形等
    ///strokeJoin   StrokeJoin设置两个绘制形状衔接处的风格。如圆角、方形等
    ///strokeWidth   double画笔的宽度s
    ///tylePainting   Style填充方式。PaintingStyle.fill-充满;PaintingStyle.stroke-空心
    ///blendMode   BlendMode像素混合模式。当画一个shape或者合成图层的时候会生效。
    Color shadowColor = Colors.pink;
    var shadowWidth = 20.0;
    final Offset  offsetCenter = Offset(10.0, 10.0);
    var outerRadius = 60.0;//外圈大小
    var strokeWidth = 20.0;//圈宽度
    final ringPaint = Paint()
      ..style = PaintingStyle.stroke
      ..color = shadowColor
      ..strokeWidth = (strokeWidth);
    canvas.drawCircle(offsetCenter, outerRadius, ringPaint);
    /// 绘制弧线
    ///drawArc(Rect rect, double startAngle, double sweepAngle, bool useCenter, Paint paint)
    /// 绘制图片
    ///drawImage(Image image, Offset p, Paint paint)
    /// 绘制圆
    ///drawCircle(Offset c, double radius, Paint paint)
    /// 绘制线条
    ///drawLine(Offset p1, Offset p2, Paint paint)
    /// 绘制椭圆
    /// drawOval(Rect rect, Paint paint)
    /// 绘制文字
    ///drawParagraph(Paragraph paragraph, Offset offset)
    /// 绘制路径
    ///drawPath(Path path, Paint paint)
    /// 绘制点
    ///drawPoints(PointMode pointMode, List<Offset> points, Paint paint)
    /// 绘制Rect
    ///drawRect(Rect rect, Paint paint)
    /// 绘制阴影
    ///drawShadow(Path path, Color color, double elevation, bool transparentOccluder)
  }

//shouldRepaint() 返回 true 才会进行重绘,否则就只会绘制一次。你可以通过一些条件判断来决定是否每次绘制,这样能够节约系统资源。
  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return true;
  }
}

猜你喜欢

转载自blog.csdn.net/ivy_doudou/article/details/100132960