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;
}
}