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

第二百五十五回

文章目录

  • 1. 概念介绍
  • 2. 思路与方法
    • 2.1 实现思路
    • 2.2 实现方法
  • 3. 代码与效果
    • 3.1 示例代码
    • 3.2 运行效果
  • 4. 内容总结

我们在上一章回中介绍了"自定义可以滑动的刻度尺"样相关的内容,本章回中将介绍"如何给图片添加阴影".闲话休提,让我们一起Talk Flutter吧。

1. 概念介绍

我们在前面章回中介绍了各种阴影,并且介绍了如何绘制阴影,不过还有一个比较特殊的组件没有阴影,该组件是图片,比如我们在绘制阴影时也无法给图片绘制阴影,
我记得在Android原生开发时可以给图片绘制出阴影效果,但是在Flutter中无法给图片绘制出阴影。不过我们可以给图片添加阴影,本章回中将介绍具体的实现方法。

2. 思路与方法

2.1 实现思路

我们在前面的博客中介绍过一种给组件添加阴影的方法,给图片添加阴影可以借用此方法。总体的思路是在图片外层嵌套一个Container组件,然后通过Container组件
来实现阴影效果,该阴影效果会出现在图片周围,相当于在图片上添加了阴影。

2.2 实现方法

有了实现的思路后,我们将介绍具体的实现方法,详细的步骤如下:

  1. 创建Container组件对象,并且把Image组件赋值给它的child属性;
  2. 创建BoxDecoration对象并且把它赋值给Container组件的decoration属性;
  3. 创建BoxShadow对象,并且把它赋值给BoxDecoration组件的boxShadow属性;
  4. 调整BoxShadow组件的相关属性,控制阴影的大小,位置和颜色;

3. 代码与效果

3.1 示例代码

我们按照刚才介绍的实现方法来给图片添加阴影,下面是详细的代码。

///给图片添加阴影 
Widget buildImageShadow() {return Container(decoration: const BoxDecoration(boxShadow: [BoxShadow(color: Colors.redAccent,blurRadius: 16,blurStyle: BlurStyle.solid,),]),child: const Image(width: 160,height: 100,image: AssetImage("images/panda.jpeg"),fit: BoxFit.fill,filterQuality:FilterQuality.high ,),);
}

3.2 运行效果

编译并且运行上面的代码可以得到以下效果图,从图中可以看到图片的周围有一个红色的阴影。这个阴影就是我们通过代码添加的阴影。大家可以自己动手修改BoxShadow
组件的属性,进而调试出不同颜色,不同位置的阴影效果。强烈建议大家自己去实践。030
此外,这种添加方法还有一个缺点:对于纯色的图片添加阴影效果比较好,对于包含不同颜色的图片添加阴影效果不太好,主要原因是:图片中包含多种颜色,而阴影的颜
色无法和图片中的多种颜色保持一致。

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 在绘制图片时无法绘制阴影,不过可以给图片添加阴影;
  • 给图片添加阴影通过Container组件和BoxShadow组件来实现;
  • BoxShadow组件可以控制阴影的颜色,范围大小,出现位置等属性;
  • 给纯色图片添加阴影的效果比较好,给包含不同颜色的图片添加的阴影效果不太好;
    看官们,与"如何给图片添加阴影"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

相关文章:

  • Open3D 平均点密度计算-方法1(12)
  • 【服务器数据恢复】FreeNAS+ESXi数据恢复案例
  • 微服务实战系列之API加密
  • Java中SpringBoot组件集成接入【Knife4j接口文档(swagger增强)】
  • 20个城市公交线路数据分享,Shp+excel格式,2020年,城市发展、公共设施规划必备数据,已实现数据可视化
  • 中兴通讯5G-A场景突破成果显著,获得行业高度认可
  • dockerfile文件详解
  • C++类和对象(中)
  • Influxdb2修改管理员密码
  • 【MySQL】ANY函数 的巧用(筛选字段 > ANY(语句) 和 筛选字段 < ANY(语句))
  • 【80211-2022】【学习记录】【第九章】Duration/ID 字段(Qos STA)
  • L1-012 计算指数(Java)
  • go 中的 fmt 占位符
  • 【React】常见疑问的整理
  • thinkphp递归实现无限级子分类合并上级children
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 2019.2.20 c++ 知识梳理
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • MySQL-事务管理(基础)
  • Python连接Oracle
  • REST架构的思考
  • springboot_database项目介绍
  • Wamp集成环境 添加PHP的新版本
  • 创建一种深思熟虑的文化
  • 工作中总结前端开发流程--vue项目
  • 好的网址,关于.net 4.0 ,vs 2010
  • 记一次删除Git记录中的大文件的过程
  • 区块链技术特点之去中心化特性
  • 全栈开发——Linux
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 使用docker-compose进行多节点部署
  • 使用权重正则化较少模型过拟合
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 微信小程序--------语音识别(前端自己也能玩)
  • 小程序01:wepy框架整合iview webapp UI
  • 译米田引理
  • 用 Swift 编写面向协议的视图
  • 正则与JS中的正则
  • 中文输入法与React文本输入框的问题与解决方案
  • C# - 为值类型重定义相等性
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ###C语言程序设计-----C语言学习(6)#
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (52)只出现一次的数字III
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (java)关于Thread的挂起和恢复
  • (Note)C++中的继承方式
  • (第一天)包装对象、作用域、创建对象