zoukankan      html  css  js  c++  java
  • Flutter中的剪裁

     

    圆形剪裁(ClipOval)

     

    new ClipOval(

        child: new SizedBox(

          100.0,

          height:100.0,

          child:  new Image.network("https://sfault-avatar.b0.upaiyun.com/206/120/2061206110-5afe2c9d40fa3_huge256",fit: BoxFit.fill,),

        ),

      ),

    圆角矩形剪裁(ClipRRect)

     

    new ClipRRect(

        borderRadius: new BorderRadius.all(

            new Radius.circular(10.0)),

        child:  new SizedBox(

          100.0,

          height:100.0,

          child:  new Image.network("https://sfault-avatar.b0.upaiyun.com/206/120/2061206110-5afe2c9d40fa3_huge256",fit: BoxFit.fill,),

        ),

      )

    矩形剪裁(ClipRect)

    这个控件需要定义clipper参数才能使用,不然没有效果。

    class _MyClipper extends CustomClipper<Rect>{

      @override

      Rect getClip(Size size) {

        return new Rect.fromLTRB(10.0, 10.0, size.width - 10.0,  size.height- 10.0);

      }

      @override

      bool shouldReclip(CustomClipper<Rect> oldClipper) {

          return true;

      }

    }

     

    new ClipRect(

                clipper: new _MyClipper(),

                child:new SizedBox(

                  100.0,

                  height:100.0,

                  child:  new Image.network("https://sfault-avatar.b0.upaiyun.com/206/120/2061206110-5afe2c9d40fa3_huge256",fit: BoxFit.fill,),

                ) ,

              ),

    路径剪裁(ClipPath)

     

    class _StarCliper extends CustomClipper<Path>{

      final double radius;

      _StarCliper({this.radius});

      /// 角度转弧度公式

      double degree2Radian(int degree) {

        return (Math.pi * degree / 180);

      }

      @override

      Path getClip(Size size) {

        double radius = this.radius;

        Path path = new Path();

        double radian = degree2Radian(36);// 36为五角星的角度

        double radius_in = (radius * Math.sin(radian / 2) / Math

            .cos(radian)); // 中间五边形的半径

        path.moveTo((radius * Math.cos(radian / 2)), 0.0);// 此点为多边形的起点

        path.lineTo((radius * Math.cos(radian / 2) + radius_in

            * Math.sin(radian)),

            (radius - radius * Math.sin(radian / 2)));

        path.lineTo((radius * Math.cos(radian / 2) * 2),

            (radius - radius * Math.sin(radian / 2)));

        path.lineTo((radius * Math.cos(radian / 2) + radius_in

            * Math.cos(radian / 2)),

            (radius + radius_in * Math.sin(radian / 2)));

        path.lineTo(

            (radius * Math.cos(radian / 2) + radius

                * Math.sin(radian)), (radius + radius

            * Math.cos(radian)));

        path.lineTo((radius * Math.cos(radian / 2)),

            (radius + radius_in));

        path.lineTo(

            (radius * Math.cos(radian / 2) - radius

                * Math.sin(radian)), (radius + radius

            * Math.cos(radian)));

        path.lineTo((radius * Math.cos(radian / 2) - radius_in

            * Math.cos(radian / 2)),

            (radius + radius_in * Math.sin(radian / 2)));

        path.lineTo(0.0, (radius - radius * Math.sin(radian / 2)));

        path.lineTo((radius * Math.cos(radian / 2) - radius_in

            * Math.sin(radian)),

            (radius - radius * Math.sin(radian / 2)));

        path.close();// 使这些点构成封闭的多边形

        return path;

      }

      @override

      bool shouldReclip(_StarCliper oldClipper) {

          return this.radius != oldClipper.radius;

      }

    }

    先定义好五角星的路径ClipRect,然后:

    new ClipPath(

        clipper: new _StarCliper(radius: 50.0),

        child:new SizedBox(

          100.0,

          height:100.0,

          child:  new Image.network("https://sfault-avatar.b0.upaiyun.com/206/120/2061206110-5afe2c9d40fa3_huge256",fit: BoxFit.fill,),

        ) ,

      )

    转载:https://segmentfault.com/a/1190000015149101?utm_source=index-hottest

  • 相关阅读:
    SqlServer该如何合适的索引
    SqlServer该如何合适的索引
    SQLServer跨库查询分布式查询
    SQLServer跨库查询分布式查询
    sqlserver 字符串能不能执行
    WPF添加类库并引用
    StringUtils类常用方法
    如何理解.NET开发中的x86/x64/AnyCPU
    JS获取url参数
    MySQL CONCAT函数:字符串拼接
  • 原文地址:https://www.cnblogs.com/sundaysandroid/p/13554154.html
Copyright © 2011-2022 走看看