zoukankan      html  css  js  c++  java
  • flutter-贝塞尔曲线

    import 'package:flutter/material.dart';
    
    class HomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Column(
            children: <Widget>[
              ClipPath(
                clipper: BottomClipper(),//路径
                child: Container(
                  color: Colors.deepOrange,
                  height: 200,
                ),
              )
            ],
          ),
        );
      }
    }
    
    class BottomClipper extends CustomClipper<Path>{
      @override
      Path getClip(Size size) {
        var path=Path();
        path.lineTo(0, 0);
        path.lineTo(0, size.height-30);
        var firstControlPoint =Offset(size.width/2,size.height);
        var firstEndPoint = Offset(size.width,size.height-30);
         path.quadraticBezierTo(firstControlPoint.dx, firstControlPoint.dy, firstEndPoint.dx, firstEndPoint.dy);
        path.lineTo(size.width, size.height-30);
        path.lineTo(size.width, 0);
        return path;
      }
    
      @override
      bool shouldReclip(CustomClipper<Path> oldClipper) {
        return false;
      }
    }

    双曲线

    import 'package:flutter/material.dart';
    
    class HomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Column(
            children: <Widget>[
              ClipPath(
                clipper: BottomClipper(),//路径
                child: Container(
                  color: Colors.deepOrange,
                  height: 200,
                ),
              )
            ],
          ),
        );
      }
    }
    
    class BottomClipper extends CustomClipper<Path>{
      @override
      Path getClip(Size size) {
        var path=Path();
        path.lineTo(0, 0);
        path.lineTo(0, size.height-20);
        path.lineTo(0, size.height-20);
          var firstControlPoint =Offset(size.width/4,size.height);
          var firstEndPoint = Offset(size.width/2.25,size.height-30);
    
          path.quadraticBezierTo(firstControlPoint.dx, firstControlPoint.dy, firstEndPoint.dx, firstEndPoint.dy);
    
          var secondControlPoint = Offset(size.width/4*3,size.height-80);
          var secondEndPoint = Offset(size.width,size.height-40);
    
          path.quadraticBezierTo(secondControlPoint.dx, secondControlPoint.dy, secondEndPoint.dx, secondEndPoint.dy);
    
        path.lineTo(size.width, size.height-40);
        path.lineTo(size.width, 0);
    
        return path;
      }
    
      @override
      bool shouldReclip(CustomClipper<Path> oldClipper) {
        return false;
      }
    }

  • 相关阅读:
    【转】设计模式总结
    【转】并行开发
    C#开发微信公众平台-就这么简单
    (转载)MVC,MVP 和 MVVM 的图示
    插入排序
    选择排序
    VS发布 错误 未能将文件 复制到
    SqlServer 更改数据库名称
    linq查询时查询语句中附带多个查询时“已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭”
    不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)
  • 原文地址:https://www.cnblogs.com/lxz-blogs/p/13235926.html
Copyright © 2011-2022 走看看