第11章组件装饰和视觉效果-CustomPainter自定义画板-绘制圆角矩形
防采集标记:亢少军老师的课程和资料
import 'package:flutter/material.dart';
import 'dart:math';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'CustomPaint绘制圆角矩形示例',
home: Scaffold(
appBar: AppBar(
title: Text(
'CustomPaint绘制圆角矩形示例',
style: TextStyle(color: Colors.white),
),
),
body: Center(
child: SizedBox(
width: 500.0,
height: 500.0,
child: CustomPaint(
painter: LinePainter(),
child: Center(
child: Text(
'绘制圆角矩形',
style: const TextStyle(
fontSize: 18.0,
fontWeight: FontWeight.w600,
color: Colors.black,
),
),
),
),
)
),
),
);
}
}
//继承于CustomPainter并且实现CustomPainter里面的paint和shouldRepaint方法
class LinePainter extends CustomPainter {
//定义画笔
Paint _paint = new Paint()
..color = Colors.grey
..strokeCap = StrokeCap.square
..isAntiAlias = true
..strokeWidth = 3.0
..style = PaintingStyle.stroke;//画笔样式有填充PaintingStyle.fill及没有填充PaintingStyle.stroke两种
///重写绘制内容方法
@override
void paint(Canvas canvas, Size size) {
//中心点坐标为200,200 边长为100
Rect rect = Rect.fromCircle(center: Offset(200.0, 200.0), radius: 100.0);
//根据矩形创建一个角度为10的圆角矩形
RRect rrect = RRect.fromRectAndRadius(rect, Radius.circular(20.0));
//开始绘制圆角矩形
canvas.drawRRect(rrect, _paint);
}
///是否需要重绘
@override
bool shouldRepaint(CustomPainter oldDelegate) {
return false;
}
}
- Flutter技术入门与实战: http://product.dangdang.com/26485813.html
- Flutter交流学习群:894109159
- Flutter开源项目请关注: https://github.com/kangshaojun
- Flutter****:https://edu.****.net/lecturer/2436
@作者: 亢少军