Flutter核心库painting详解

painting是Flutter的一个核心库,它提供了许多用于绘制和布局的widget和类。下面是一些painting库中常用的widget和类:

  • CustomPaint:一个可以自定义绘制的widget。使用CustomPaint可以在绘制区域中任意绘制内容。
  • Canvas:一个可以用来绘制的画布。Canvas包含了各种绘制方法,如drawLine、drawCircle、drawRect等,可以用来绘制各种形状的图形。
  • Path:一个可以用来绘制任意形状的路径。Path包含了各种方法,如moveTo、lineTo、quadraticBezierTo、cubicTo等,可以用来绘制各种复杂的路径。
  • Decoration:一个可以用来修饰widget的装饰器。Decoration包含了各种修饰方法,如Border、BoxDecoration、Gradient等,可以用来为widget添加各种样式和效果。
  • BoxShadow:一个可以为widget添加阴影效果的类。BoxShadow包含了阴影的各种属性,如颜色、偏移量、模糊半径等。
  • Gradient:一个可以用来绘制渐变效果的类。Gradient包含了各种渐变方法,如LinearGradient、RadialGradient、SweepGradient等,可以用来为widget添加各种渐变效果。

下面是一个简单的使用CustomPaint和Canvas绘制一个圆形的示例:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Painting App',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Painting App'),
      ),
      body: Center(
        child: CustomPaint(
          size: Size(200, 200),
          painter: MyPainter(),
        ),
      ),
    );
  }
}

class MyPainter extends CustomPainter {
  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()
      ..color = Colors.blue
      ..strokeWidth = 5
      ..style = PaintingStyle.stroke;
    final center = Offset(size.width / 2, size.height / 2);
    final radius = size.width / 2;
    canvas.drawCircle(center, radius, paint);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) => false;
}

该示例使用了CustomPaint和Canvas来绘制一个蓝色的圆形。CustomPaint的painter属性指定了绘制时使用的MyPainter类,MyPainter类中的paint方法使用Canvas绘制了一个圆形。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:37:00

results matching ""

    No results matching ""