当前位置: 首页 > news >正文

Flutter 剪裁(Clip)

🔥 ClipOval 🔥

子组件为正方形时剪裁成内贴圆形;为矩形时,剪裁成内贴椭圆

裁剪纯色背景 

ClipOval(child: Container(width: 300.w,height: 300.w,decoration: const BoxDecoration(color: Colors.red),),),

裁剪背景图片

裁剪前 

ClipOval(clipBehavior: Clip.none,child: Image.asset('assets/demo/message.png',width: 300.w,)),

裁剪后

ClipOval(child: Image.asset('assets/demo/message.png',width: 300.w,)),

自定义裁剪区域一

ClipOval(clipper: ClipperOvalPath(),child: Image.asset('assets/demo/message.png',width: 300.w,)),
class ClipperOvalPath extends CustomClipper<Rect> {@overrideRect getClip(Size size) {return Rect.fromLTRB(0, 0, size.width - 100.w, size.height - 100.w);}@overridebool shouldReclip(CustomClipper<Rect> oldClipper) {return false;}
}

自定义裁剪区域二

class ClipperOvalPath extends CustomClipper<Rect> {@overrideRect getClip(Size size) {return Rect.fromLTRB(0, 0, size.width - 50.w, size.height - 100.w);}@overridebool shouldReclip(CustomClipper<Rect> oldClipper) {return false;}
}

自定义裁剪区域三 

class ClipperOvalPath extends CustomClipper<Rect> {@overrideRect getClip(Size size) {return Rect.fromLTRB(0, 0, size.width - 50.w, size.height - 200.w);}@overridebool shouldReclip(CustomClipper<Rect> oldClipper) {return false;}
}

 

🔥 ClipRRect 🔥

将子组件剪裁为圆角矩形

纯色背景裁剪为圆角矩形

ClipRRect(borderRadius: BorderRadius.circular(50.w),child: Container(width: 300.w,height: 300.w,decoration: const BoxDecoration(color: Colors.red),),)

 将图片裁剪为圆角矩形

ClipRRect(clipper: ClipperOvalPath(),child: Image.asset('assets/demo/message.png',)),
class ClipperOvalPath extends CustomClipper<RRect> {@overrideRRect getClip(Size size) {return RRect.fromLTRBR(0, 0, size.width-100.w, size.height-140.w,Radius.circular(20.w));}@overridebool shouldReclip(covariant CustomClipper<RRect> oldClipper) {return true;}
}

自定义裁剪区域导致裁剪图片为圆角矩形失败 

class ClipperOvalPath extends CustomClipper<RRect> {@overrideRRect getClip(Size size) {return RRect.fromLTRBR(0, 0, size.width-100.w, size.height-80.w,Radius.circular(20.w));}@overridebool shouldReclip(covariant CustomClipper<RRect> oldClipper) {return true;}
}

🔥 ClipRect 🔥

默认剪裁掉子组件布局空间之外的绘制内容(溢出部分剪裁)

 Align(alignment: Alignment.topLeft,widthFactor: .5, //宽度设为原来宽度一半,另一半会溢出child: Image.asset("assets/demo/message.png"),),ClipRect(//将溢出部分剪裁child: Align(alignment: Alignment.topLeft,widthFactor: .5,//宽度设为原来宽度一半child: Image.asset("assets/demo/message.png"),),),

 🔥 ClipPath 🔥

按照自定义的路径剪裁

设置了剪切的区域

Image.asset("assets/demo/message.png"),DecoratedBox(decoration: const BoxDecoration(color: Colors.red),child: ClipRect(clipper: MyClipper(), //使用自定义的clipperchild: Image.asset("assets/demo/message.png")),)
class MyClipper extends CustomClipper<Rect> {@overrideRect getClip(Size size) => const Rect.fromLTWH(10.0, 15.0, 100.0, 200.0);@overridebool shouldReclip(CustomClipper<Rect> oldClipper) => false;
}

http://www.lryc.cn/news/194253.html

相关文章:

  • 嵌入式C语言自我修养《GNU C编译器扩展语法》学习笔记
  • 密码学二: md5 网站服务器与用户通信过程 ca原理 签名原理 Flame 病毒原理
  • Zend Framework 3.1.3 gadget chain
  • 互联网Java工程师面试题·Java 并发编程篇·第四弹
  • 3、Linux下安装
  • Zookeeper【Curator客户端Java版】从0到1——万字学习笔记
  • 生物标志物发现中的无偏数据分析策略
  • 华为校招机试题- 机器人活动区域-2023年
  • 半屏小程序
  • 2023年最新Python大数据之Python基础【七】管理系统
  • 【网安】网络安全防止个人信息泄露
  • ChatGPT,AIGC 数据库应用 Mysql 常见优化30例
  • 并查集路径压缩
  • spring和springMVC的说明
  • 软件工程与计算总结(十)软件体系结构设计与构建
  • 【实操】基于ChatGPT构建知识库
  • ribbonx编程笔记-读写注册表与使用自定义对话框
  • 网工记背配置命令(3)----POE配置示例
  • 网络安全(黑客技术)—0基础学习手册
  • [部署网站]01安装宝塔面板搭建WordPress
  • Can We Edit Multimodal Large Language Models?
  • 使用jsqlparser创建MySQL建表语句
  • 字符串思维题练习 DAY6 (CF 245H , CF 559B , CF 1731C , CF1109B)
  • Linux:Mac VMware Fusion13以及CentOS7安装包
  • 【微服务部署】十、使用Docker Compose搭建高可用Redis集群
  • 【数据结构】树状数组C++详解
  • 机器人制作开源方案 | 扫地机器人
  • 10.2手动推导linux中file, cdev, inode之间的关系
  • JavaScript基础知识13——运算符:一元运算符,二元运算符
  • 异步使用langchain