【flutter】绘制图形

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;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值